AlanWong 2 سال پیش
والد
کامیت
e2499461af

+ 18 - 1
src/api/order.ts

@@ -41,10 +41,27 @@ function deleteList(data : any, url : any) {
 		params: data
 	})
 }
+// 回收站数据
+function selectDeleteList(url : any) {
+	return request({
+		url: '/supply/' + url + '/selectDeleteList',
+		method: 'GET',
+	})
+}
+// 接单
+function ordersaccepting(data : any, url : any) {
+	return request({
+		url: '/supply/' + url + '/ordersaccepting',
+		method: 'GET',
+		params: data
+	})
+}
 export default {
 	treeList,
 	pageList,
 	saveList,
 	updateList,
-	deleteList
+	deleteList,
+	selectDeleteList,
+	ordersaccepting
 }

+ 17 - 0
src/benyun/components/Assembly/material.vue

@@ -0,0 +1,17 @@
+<template>
+	<div>
+		<el-tag size='mini' :type="propValue.status===0?'primary':'danger'"
+			disable-transitions>{{propValue.status===0?'正常':'禁用'}}</el-tag>
+	</div>
+</template>
+<script lang="ts">
+	import { Component, Prop, Vue, Watch, Mixins } from "vue-property-decorator";
+	@Component
+	export default class Material extends Vue {
+		@Prop()
+		propValue : any
+	}
+</script>
+
+<style>
+</style>

+ 17 - 0
src/benyun/components/Assembly/nature.vue

@@ -0,0 +1,17 @@
+<template>
+	<div>
+		<el-tag size='mini' type="primary"
+			disable-transitions>{{propValue.attributeType===0?'销售属性':'基本属性'}}</el-tag>
+	</div>
+</template>
+<script lang="ts">
+	import { Component, Prop, Vue, Watch, Mixins } from "vue-property-decorator";
+	@Component
+	export default class Material extends Vue {
+		@Prop()
+		propValue : any
+	}
+</script>
+
+<style>
+</style>

+ 17 - 0
src/benyun/components/Assembly/order.vue

@@ -0,0 +1,17 @@
+<template>
+	<div>
+		<el-tag size='mini' :type="propValue.status===0?'info':'primary'"
+			disable-transitions>{{propValue.status===0?'未接单':'已接单'}}</el-tag>
+	</div>
+</template>
+<script lang="ts">
+	import { Component, Prop, Vue, Watch, Mixins } from "vue-property-decorator";
+	@Component
+	export default class Order extends Vue {
+		@Prop()
+		propValue : any
+	}
+</script>
+
+<style>
+</style>

+ 2 - 2
src/benyun/components/byBill/byBill.vue

@@ -6,9 +6,9 @@
         <div class="bill-nav" v-if="sourceConfig" :class="{'onBill':showTab == 'source'}" @click="tabChange('source')">引单</div>
         <div class="bill-nav" v-if="billConfig" :class="{'onBill':showTab == 'bill'}" @click="tabChange('bill')">单据</div>
         <div class="bill-nav" v-if="smtConfig" :class="{'onBill':showTab == 'smt'}" @click="tabChange('smt')">已提交</div>
-        <div class="bill-nav" v-if="draftsBoxConfig" :class="{'onBill':showTab == 'drafts'}" @click="tabChange('draftsBox')">草稿箱</div>
+        <div class="bill-nav" v-if="draftsBoxConfig" :class="{'onBill':showTab == 'draftsBox'}" @click="tabChange('draftsBox')">草稿箱</div>
         <div class="bill-nav" v-if="allConfig" :class="{'onBill':showTab == 'all'}" @click="tabChange('all')">综合查询</div>
-        <div class="bill-nav" v-if="recycleBinConfig" :class="{'onBill':showTab == 'recycle'}" @click="tabChange('recycleBin')">回收站</div>
+        <div class="bill-nav" v-if="recycleBinConfig" :class="{'onBill':showTab == 'recycleBin'}" @click="tabChange('recycleBin')">回收站</div>
         <div class="bill-nav" v-for="(item,index) of customs" :class="{'onBill':showTab == item.name}" @click="tabChange(item.name)" :key="index">{{item.label}}</div>
       </div>
       <div class="close" @click="closeTab = !closeTab">

+ 3 - 3
src/benyun/components/byTool/byTool.vue

@@ -48,12 +48,12 @@ export default class GmTools extends Vue {
 
   tools:Array<any>=[
     { name: '新增', icon: 'el-icon-plus', clickName: 'onAdd', _class: 'add' },
-    { name: '修改', icon: 'el-icon-edit', clickName: 'onUpdate', _class: 'edit' },
-    { name: '删除', icon: 'el-icon-delete', clickName: 'onDelete', _class: 'delete' },
     { name: '提交', icon: 'el-icon-finished', clickName: 'onSmt', _class: 'smt' },
+    { name: '接单', icon: 'el-icon-finished', clickName: 'onOrder', _class: 'order' },
+    { name: '修改', icon: 'el-icon-edit', clickName: 'onUpdate', _class: 'edit' },
     { name: '取消提交', icon: 'el-icon-refresh-left', clickName: 'onReSmt', _class: 'reSmt' },
+    { name: '删除', icon: 'el-icon-delete', clickName: 'onDelete', _class: 'delete' },
     { name: '导出', icon: 'el-icon-download', clickName: 'onExport', _class: 'export' },
-    // { name: '刷新', icon: 'el-icon-refresh', clickName: 'onRefresh', _class: 'refresh' }
   ]
   showTools:Array<any>=[]
 

+ 68 - 75
src/views/audit/attribute/index.vue

@@ -1,27 +1,15 @@
 <template>
 	<div class="my-container">
-		<div class="bill-left">
-			<div class="bill-tab">
-				<div class="title">导航</div>
-				<el-tree :data="data" :props="props" @node-click="handleNodeClick"></el-tree>
-			</div>
-		</div>
 		<div class="bill-main">
 			<module-view :propConfig="config" ref="moduleView" @pagination="getDataList" @search="getDataList"
 				@resert="getDataList" @clickHandle="clickHandle" @detail="openEdit">
 			</module-view>
 		</div>
 		<!-- 新增/编辑弹窗 -->
-		<el-dialog :title="popTitle+'品牌'" :visible.sync="dialogFormVisible" width="30%">
+		<el-dialog :title="popTitle+'属性'" :visible.sync="dialogFormVisible" width="30%">
 			<by-form :propConfig="addConfig" ref="addFormId">
-				<template v-slot:logo>
-					<el-upload :limit='1' :action="baseURL+'/file/upload'" list-type="picture-card"
-						:on-preview="handlePictureCardPreview" :on-remove="handleRemove">
-						<i class="el-icon-plus"></i>
-					</el-upload>
-				</template>
 				<template v-slot:status class="clearfix">
-					<el-radio class="fl" style="margin-top: 8px;" v-model="radio" :label="1">启用</el-radio>
+					<el-radio class="fl" style="margin-top: 8px;" v-model="radio" :label="1">正常</el-radio>
 					<el-radio class="fl" style="margin-top: 8px;" v-model="radio" :label="0">禁用</el-radio>
 				</template>
 			</by-form>
@@ -36,14 +24,10 @@
 	import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 	import api from "@/api/currency";
 	import materialClass from "@/api/materialClass";
+	import Assembly from "@/benyun/components/Assembly/material.vue";
+	import AssemblyNature from "@/benyun/components/Assembly/nature.vue";
 	@Component
 	export default class Attribute extends Vue {
-		// 左边
-		data : any = []
-		props = {
-			label: 'name',
-			children: 'children'
-		}
 		// 右边
 		baseURL : any = process.env.VUE_APP_BASE_API
 		timeNum = 0;
@@ -72,8 +56,8 @@
 					},
 					{
 						span: 6,
-						label: '属性类型',
-						prop: 'attributeType',
+						label: '状态',
+						prop: 'status',
 						component: 'by-select',
 						labelWidth: '70px',
 						compConfig: {
@@ -81,35 +65,36 @@
 								placeholder: '请选择数据',
 								clearable: true,
 								data: [{
-									value: 0,
-									label: '销售属性'
-								}, {
 									value: 1,
-									label: '基本属性'
+									label: '正常'
+								}, {
+									value: 0,
+									label: '禁用'
 								}]
 							}
 						}
 					},
 					{
 						span: 6,
-						label: '状态',
-						prop: 'status',
+						label: '属性类型',
+						prop: 'attributeType',
 						component: 'by-select',
-						labelWidth: '70px',
+						labelWidth: '90px',
 						compConfig: {
 							attr: {
 								placeholder: '请选择数据',
 								clearable: true,
 								data: [{
 									value: 0,
-									label: '禁用'
+									label: '销售属性'
 								}, {
 									value: 1,
-									label: '启用'
+									label: '基本属性'
 								}]
 							}
 						}
 					},
+
 					]
 				]
 			},
@@ -131,22 +116,26 @@
 					height: 600
 				},
 				columns: [{
+					width: 500,
 					title: '名称',
 					field: 'name',
 					isDetail: true,
-					width: 150,
 				}, {
 					title: '属性值',
 					field: 'attributeValue'
 				},
 				{
+					width: 100,
 					title: '属性类型',
 					field: 'attributeType',
+					component: AssemblyNature,
 				}, {
+					width: 80,
 					title: '状态',
 					field: 'status',
-					prop: 'status',
+					component: Assembly,
 				}, {
+					width: 120,
 					title: '操作',
 					action: true,
 					plugins: [{
@@ -179,20 +168,20 @@
 			columns: [
 				[
 					{
-						span: 20,
+						span: 24,
 						label: '名称',
 						prop: 'name',
 						component: 'by-input',
 					},
 					{
-						span: 20,
+						span: 24,
 						label: '属性值',
 						slot: true,
 						prop: 'attributeValue',
 						component: 'by-input',
 					},
 					{
-						span: 20,
+						span: 24,
 						label: '属性类型',
 						slot: true,
 						prop: 'attributeType',
@@ -212,7 +201,7 @@
 						}
 					},
 					{
-						span: 20,
+						span: 24,
 						label: '显示状态',
 						slot: true,
 						prop: 'status',
@@ -321,47 +310,51 @@
 				})
 			} else return this.$message({ type: 'warning', message: '请选择删除数据' })
 			ids = ids.slice(0, ids.length - 1);
-			api.deleteList({ ids: ids }, 'maindataMaterialAttribute').then((res : any) => {
-				if (res.code === 200) {
-					this.getDataList();
-					this.$message({
-						type: 'success',
-						message: '删除成功!'
-					});
-				} else this.failHandle(res)
-			})
+			this.$confirm('确定删除吗,此操作不能撤销!', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+				center: true
+			}).then(() => {
+				api.deleteList({ ids: ids }, 'maindataMaterialAttribute').then((res : any) => {
+					if (res.code === 200) {
+						this.getDataList();
+						this.$message({
+							type: 'success',
+							message: '删除成功!'
+						});
+					} else this.failHandle(res)
+				})
+			}).catch(() => {
+				this.$message({
+					type: 'info',
+					message: '已取消删除'
+				});
+			});
 		}
 		// 操作删除
 		doDelete2(item : any) {
-			api.deleteList({ ids: item.id }, 'maindataMaterialAttribute').then((res : any) => {
-				if (res.code === 200) {
-					this.getDataList();
-					this.$message({
-						type: 'success',
-						message: '删除成功!'
-					});
-				} else this.failHandle(res)
-			})
-		}
-		handleRemove(file : any, fileList : any) {
-			console.log(file, fileList);
-		}
-		handlePictureCardPreview(file : any) {
-			console.log(file);
-		}
-		// 导航切换
-		handleNodeClick(e : any) {
-			// api.single({ categoryId: e.id }).then((res : any) => {
-			// 	if (res.code === 200) {
-			// 		(this.$refs.moduleView as any).setTableValue(res.data.records);
-			// 		let page = {
-			// 			pageNo: res.data.current, //当前页
-			// 			pageSize: res.data.size, //每页条数
-			// 			total: res.data.total //总条数
-			// 		};
-			// 		(this.$refs.moduleView as any).setPage(page)
-			// 	}
-			// })
+			this.$confirm('确定删除吗,此操作不能撤销!', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+				center: true
+			}).then(() => {
+				api.deleteList({ ids: item.id }, 'maindataMaterialAttribute').then((res : any) => {
+					if (res.code === 200) {
+						this.getDataList();
+						this.$message({
+							type: 'success',
+							message: '删除成功!'
+						});
+					} else this.failHandle(res)
+				})
+			}).catch(() => {
+				this.$message({
+					type: 'info',
+					message: '已取消删除'
+				});
+			});
 		}
 		//导出
 		onExport() {

+ 66 - 66
src/views/audit/brand/index.vue

@@ -3,24 +3,13 @@
 		<div class="bill-main">
 			<module-view :propConfig="config" ref="moduleView" @pagination="getDataList" @search="getDataList"
 				@resert="getDataList" @clickHandle="clickHandle" @detail="openEdit">
-				<!-- <template v-slot:status="{ value }">
-					<el-tag :type="value.row.status===0?'primary':'danger'"
-						disable-transitions>{{value.row.status===0?'正常':'禁用'}}</el-tag>
-						<div>{{value}}</div>
-				</template> -->
 			</module-view>
 		</div>
 		<!-- 新增/编辑弹窗 -->
 		<el-dialog :title="popTitle+'品牌'" :visible.sync="dialogFormVisible" width="30%">
 			<by-form :propConfig="addConfig" ref="addFormId">
-				<template v-slot:logo>
-					<el-upload :limit='1' :action="baseURL+'/file/upload'" list-type="picture-card"
-						:on-preview="handlePictureCardPreview" :on-remove="handleRemove">
-						<i class="el-icon-plus"></i>
-					</el-upload>
-				</template>
 				<template v-slot:status class="clearfix">
-					<el-radio class="fl" style="margin-top: 8px;" v-model="radio" :label="0">显示</el-radio>
+					<el-radio class="fl" style="margin-top: 8px;" v-model="radio" :label="0">正常</el-radio>
 					<el-radio class="fl" style="margin-top: 8px;" v-model="radio" :label="1">禁用</el-radio>
 				</template>
 			</by-form>
@@ -34,6 +23,7 @@
 <script lang="ts">
 	import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 	import api from "@/api/currency";
+	import Assembly from "@/benyun/components/Assembly/material.vue";
 	@Component
 	export default class Brand extends Vue {
 		baseURL : any = process.env.VUE_APP_BASE_API
@@ -77,25 +67,19 @@
 						span: 6,
 						label: '状态',
 						prop: 'status',
-						component: 'by-input',
 						labelWidth: '70px',
+						component: 'by-select',
 						compConfig: {
 							attr: {
-								placeholder: '请输入状态',
-								clearable: true
-							}
-						}
-					},
-					{
-						span: 6,
-						label: '备注',
-						prop: 'remark',
-						component: 'by-input',
-						labelWidth: '70px',
-						compConfig: {
-							attr: {
-								placeholder: '请输入状态',
-								clearable: true
+								placeholder: '请选择状态',
+								clearable: true,
+								data: [{
+									value: 0,
+									label: '正常'
+								}, {
+									value: 1,
+									label: '禁用'
+								}]
 							}
 						}
 					},
@@ -122,20 +106,18 @@
 				columns: [{
 					title: '名称',
 					field: 'name',
-					isDetail:true,
-					width: 150,
+					isDetail: true,
+					width: 300,
 				}, {
 					title: '简称',
 					field: 'shortName',
-					width: 100
-				}, {
-					title: '品牌logo',
-					field: 'logo'
-				}, {
+					width: 300
+				},
+				{
+					width: 80,
 					title: '状态',
 					field: 'status',
-					// slot: true,
-					prop: 'status',
+					component: Assembly,
 				}, {
 					title: '备注',
 					field: 'remark'
@@ -175,33 +157,27 @@
 			columns: [
 				[
 					{
-						span: 20,
+						span: 24,
 						label: '名称',
 						prop: 'name',
 						component: 'by-input',
 					},
 					{
-						span: 20,
+						span: 24,
 						label: '简称',
 						prop: 'shortName',
 						component: 'by-input',
 					},
 					{
-						span: 20,
-						label: '品牌logo',
-						slot: true,
-						prop: 'logo',
-					},
-					{
-						span: 20,
-						label: '显示状态',
+						span: 24,
+						label: '状态',
 						slot: true,
 						prop: 'status',
 					},
 				],
 				[
 					{
-						span: 20,
+						span: 24,
 						label: '备注',
 						prop: 'remark',
 						component: 'by-input',
@@ -299,27 +275,51 @@
 				})
 			} else return this.$message({ type: 'warning', message: '请选择删除数据' })
 			ids = ids.slice(0, ids.length - 1);
-			api.deleteList({ ids: ids }, 'maindataMaterialBrand').then((res : any) => {
-				if (res.code === 200) {
-					this.getDataList();
-					this.$message({
-						type: 'success',
-						message: '删除成功!'
-					});
-				} else this.failHandle(res)
-			})
+			this.$confirm('确定删除吗,此操作不能撤销!', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+				center: true
+			}).then(() => {
+				api.deleteList({ ids: ids }, 'maindataMaterialBrand').then((res : any) => {
+					if (res.code === 200) {
+						this.getDataList();
+						this.$message({
+							type: 'success',
+							message: '删除成功!'
+						});
+					} else this.failHandle(res)
+				})
+			}).catch(() => {
+				this.$message({
+					type: 'info',
+					message: '已取消删除'
+				});
+			});
 		}
 		// 操作删除
 		doDelete2(item : any) {
-			api.deleteList({ ids: item.id }, 'maindataMaterialBrand').then((res : any) => {
-				if (res.code === 200) {
-					this.getDataList();
-					this.$message({
-						type: 'success',
-						message: '删除成功!'
-					});
-				} else this.failHandle(res)
-			})
+			this.$confirm('确定删除吗,此操作不能撤销!', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+				center: true
+			}).then(() => {
+				api.deleteList({ ids: item.id }, 'maindataMaterialBrand').then((res : any) => {
+					if (res.code === 200) {
+						this.getDataList();
+						this.$message({
+							type: 'success',
+							message: '删除成功!'
+						});
+					} else this.failHandle(res)
+				})
+			}).catch(() => {
+				this.$message({
+					type: 'info',
+					message: '已取消删除'
+				});
+			});
 		}
 		handleRemove(file : any, fileList : any) {
 			console.log(file, fileList);

+ 32 - 73
src/views/audit/materialAdd/index.vue

@@ -1,17 +1,12 @@
 <template>
 	<div class="detil">
+		<by-tool :propConfig="toolConfig" />
 		<div class="box-shadow">
 			<by-form :propConfig="config" ref="form">
 				<template v-slot:description>
 					<el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="textarea">
 					</el-input>
 				</template>
-				<template v-slot:pic>
-					<el-upload :limit='1' :action="baseURL+'/file/upload'" list-type="picture-card"
-						:on-preview="handlePictureCardPreview" :on-remove="handleRemove">
-						<i class="el-icon-plus"></i>
-					</el-upload>
-				</template>
 				<template v-slot:radio>
 					<el-radio v-model="radio" :label="1">单规格</el-radio>
 					<el-radio v-model="radio" :label="2">多规格</el-radio>
@@ -31,9 +26,6 @@
 					<el-radio v-model="issued" :label="2">否</el-radio>
 				</template>
 			</by-form>
-			<div style="padding: 0 100px;">
-				<el-button type="primary" @click="doSave">保存</el-button>
-			</div>
 		</div>
 	</div>
 </template>
@@ -41,7 +33,6 @@
 <script lang="ts">
 	import { Component, Prop, Vue, Watch } from "vue-property-decorator";
 	import api from '@/api/material'
-	// import myInput from './input.vue'
 	@Component
 	export default class DemoForm extends Vue {
 		baseURL : any = process.env.VUE_APP_BASE_API
@@ -50,6 +41,17 @@
 		ismakeup : any = 1
 		issued : any = 1
 		textarea : any = ''
+		toolConfig = {
+			customTools: [
+				{
+					name: '保存', icon: 'el-icon-plus', audit: [''], event: {
+						click: () => {
+							(this as any).getFormData()
+						}
+					}
+				}
+			]
+		}
 		config = {
 			attr: {
 				size: 'small',
@@ -228,35 +230,20 @@
 					},
 					{
 						span: 6,
-						label: '分类id',
+						label: '分类',
 						prop: 'select',
 						component: 'by-select',
 						compConfig: {
 							attr: {
 								placeholder: '请选择数据',
 								clearable: true,
-								data: [{
-									value: '选项1',
-									label: '黄金糕'
-								}, {
-									value: '选项2',
-									label: '双皮奶'
-								}, {
-									value: '选项3',
-									label: '蚵仔煎'
-								}, {
-									value: '选项4',
-									label: '龙须面'
-								}, {
-									value: '选项5',
-									label: '北京烤鸭'
-								}]
-							}
-						}
+							},
+							request: '/maindata/maindataMaterialCategory/treeList'
+						},
 					},
 					{
 						span: 6,
-						label: '虚拟分类id',
+						label: '虚拟分类',
 						prop: 'select',
 						component: 'by-select',
 						compConfig: {
@@ -284,7 +271,7 @@
 					},
 					{
 						span: 6,
-						label: '厂家物料id',
+						label: '厂家物料',
 						prop: 'factoryId',
 						component: 'by-select',
 						compConfig: {
@@ -342,7 +329,7 @@
 					},
 					{
 						span: 6,
-						label: '物料属性表id',
+						label: '物料属性表',
 						prop: 'select',
 						component: 'by-select',
 						compConfig: {
@@ -371,20 +358,12 @@
 				],
 				[
 					{
-						span: 10,
+						span: 30,
 						label: '描述',
 						slot: true,
 						prop: 'description',
 					}
 				],
-				[
-					{
-						span: 20,
-						label: '物料封面图',
-						slot: true,
-						prop: 'pic',
-					}
-				],
 				[
 					{
 						span: 20,
@@ -393,12 +372,6 @@
 						prop: 'radio',
 					}
 				],
-				// [
-				// 	{
-				// 		span: 20,
-				// 		component:myInput
-				// 	}
-				// ],
 				[
 					{
 						span: 20,
@@ -431,37 +404,22 @@
 				console.log('机构商品分类 ==> ', res);
 			})
 		}
-		handleRemove(file : any, fileList : any) {
-			console.log(file, fileList);
-		}
-		handlePictureCardPreview(file : any) {
-			console.log(file);
-		}
 		doSave() {
 			this.getFormData()
 		}
 		getFormData() {
-			let data : any = (this as any).$refs.form.getValue();
-			data.description = this.textarea;
-			data.pic = '';
-			data.status = this.radioStatus;
-			data.ismakeup = this.ismakeup;
-			data.issued = this.issued;
-			console.log('表单数据:', data);
-			api.save(data).then((res : any) => {
-				console.log(res);
-				if (res.code === 200) {
-					(this as any).$tab.closeOpenPage('/materialFile/productManagement')
-					this.$message({ type: 'success', message: res.msg })
-				}
-			})
-		}
-		// 表单校验
-		getFormVali() {
 			(this as any).$refs.form.validate().then(() => {
-				console.log('验证通过')
-			}).catch(() => {
-				console.log('验证不通过')
+				let data : any = (this as any).$refs.form.getValue();
+				data.description = this.textarea;
+				data.status = this.radioStatus;
+				data.ismakeup = this.ismakeup;
+				data.issued = this.issued;
+				api.save(data).then((res : any) => {
+					if (res.code === 200) {
+						(this as any).$tab.closeOpenPage('/materialFile/productManagement')
+						this.$message({ type: 'success', message: res.msg })
+					}
+				})
 			});
 		}
 	}
@@ -481,6 +439,7 @@
 			color: #303133;
 			-webkit-transition: .3s;
 			transition: .3s;
+			margin-top: 20px;
 		}
 	}
 </style>

+ 0 - 67
src/views/audit/materialAdd/input.vue

@@ -1,67 +0,0 @@
-<template>
-  <div>
-		<by-table :propConfig="config" ref="table"></by-table>
-	</div>
-</template>
-
-<script lang="ts">
-	import { Component, Prop, Vue} from "vue-property-decorator";
-	
-	@Component
-	export default class Input extends Vue {
-		@Prop()
-		propValue:any
-		config:any={
-		  attr:{
-		    size:'mini',
-		    height:240,
-		    seq:true,
-		    align:'center',
-		    checkbox:true
-		  },
-		  columns:[{
-		    title:'id',
-		    field:'id',
-		    width:50
-		  },
-		  {
-		    title:'姓名',
-		    field:'name',
-		    isDetail:true,
-		    width:100
-		  },
-		  {
-		    title:'日期',
-		    field:'time'
-		  },
-		  {
-		    title:'插槽',
-		    field:'slotField',
-		    slot:true
-		  },
-		  {
-		    title:'操作',
-		    action:true,
-		    plugins:[{
-		      icon:'el-icon-edit',
-		      name:'编辑',
-		      audit:'',
-		      event:{
-		        click:(item:any) => {
-		          console.log('该行数据:',item)
-		        }
-		      }
-		    },{
-		      name:'查看',
-		      event:{
-		        click:(item:any) => {
-		          console.log('该行数据:',item)
-		          console.log('this:',this)
-		        }
-		      }
-		    }]
-		  }]
-		}
-		
-	}
-</script>

+ 24 - 41
src/views/audit/materialEdit/index.vue

@@ -1,17 +1,12 @@
 <template>
 	<div class="detil">
+		<by-tool :propConfig="toolConfig" />
 		<div class="box-shadow">
 			<by-form :propConfig="config" ref="form">
 				<template v-slot:description="option">
 					<el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="textarea">
 					</el-input>
 				</template>
-				<template v-slot:pic="option">
-					<el-upload :limit='1' :action="baseURL+'/file/upload'" list-type="picture-card"
-						:on-preview="handlePictureCardPreview" :on-remove="handleRemove">
-						<i class="el-icon-plus"></i>
-					</el-upload>
-				</template>
 				<template v-slot:radio="option">
 					<el-radio v-model="radio" :label="1">单规格</el-radio>
 					<el-radio v-model="radio" :label="2">多规格</el-radio>
@@ -30,9 +25,6 @@
 					<el-radio v-model="issued" :label="2">否</el-radio>
 				</template>
 			</by-form>
-			<div style="padding: 0 100px;">
-				<el-button type="primary" @click="getFormData">保存</el-button>
-			</div>
 		</div>
 	</div>
 </template>
@@ -48,10 +40,20 @@
 		ismakeup : any = 1
 		issued : any = 1
 		textarea : any = ''
+		toolConfig = {
+			customTools: [
+				{
+					name: '保存', icon: 'el-icon-plus', audit: [''], event: {
+						click: () => {
+							(this as any).getFormData()
+						}
+					}
+				}
+			]
+		}
 		config = {
 			attr: {
 				size: 'small',
-				height: 720,
 				rules: {
 					name: [{
 						required: true, message: '请输入名称', trigger: 'blur'
@@ -227,7 +229,7 @@
 					},
 					{
 						span: 6,
-						label: '分类id',
+						label: '分类',
 						prop: 'select',
 						component: 'by-select',
 						compConfig: {
@@ -255,7 +257,7 @@
 					},
 					{
 						span: 6,
-						label: '虚拟分类id',
+						label: '虚拟分类',
 						prop: 'select',
 						component: 'by-select',
 						compConfig: {
@@ -283,7 +285,7 @@
 					},
 					{
 						span: 6,
-						label: '厂家物料id',
+						label: '厂家物料',
 						prop: 'factoryId',
 						component: 'by-select',
 						compConfig: {
@@ -343,7 +345,7 @@
 				[
 					{
 						span: 6,
-						label: '物料属性表id',
+						label: '物料属性表',
 						prop: 'select',
 						component: 'by-select',
 						compConfig: {
@@ -378,14 +380,6 @@
 						prop: 'description',
 					}
 				],
-				[
-					{
-						span: 20,
-						label: '物料封面图',
-						slot: true,
-						prop: 'pic',
-					}
-				],
 				[
 					{
 						span: 20,
@@ -428,27 +422,15 @@
 		getMaterialData(e : any) {
 			console.log(e);
 		}
-		handleRemove(file : any, fileList : any) {
-			console.log(file, fileList);
-		}
-		handlePictureCardPreview(file : any) {
-			console.log(file);
-		}
 		getFormData() {
-			let data = (this as any).$refs.form.getValue();
-			api.update(data).then((res : any) => {
-				if (res.code === 200) {
-					(this as any).$tab.closeOpenPage('/materialFile/productManagement')
-					this.$message({ type: 'success', message: res.msg })
-				}
-			})
-		}
-
-		getFormVali() {
 			(this as any).$refs.form.validate().then(() => {
-				console.log('验证通过')
-			}).catch(() => {
-				console.log('验证不通过')
+				let data = (this as any).$refs.form.getValue();
+				api.update(data).then((res : any) => {
+					if (res.code === 200) {
+						(this as any).$tab.closeOpenPage('/materialFile/productManagement')
+						this.$message({ type: 'success', message: res.msg })
+					}
+				})
 			});
 		}
 	}
@@ -468,6 +450,7 @@
 			color: #303133;
 			-webkit-transition: .3s;
 			transition: .3s;
+			margin-top: 20px;
 		}
 	}
 </style>

+ 430 - 0
src/views/audit/order/index.vue

@@ -0,0 +1,430 @@
+<template>
+	<div>
+		<by-bill :propConfig="config" @search="search" @onSmt="doSave" ref="bill" @onAdd="onAdd" @onOrder="onOrder"
+			@resert="resert" @clickHandle="clickHandle" @detail="openEdit">
+		</by-bill>
+	</div>
+</template>
+
+<script lang="ts">
+	import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+	import api from "@/api/order";
+	import Assembly from "@/benyun/components/Assembly/order.vue";
+	@Component
+	export default class OrderTask extends Vue {
+		// 右边
+		baseURL : any = process.env.VUE_APP_BASE_API
+		setStatusData : any = ''
+		timeNum = 0;
+		timer : any = null
+		config : any = {
+			attr: {
+				activeName: 'all'
+			},
+			// 单据
+			bill: {
+				tool: {
+					customTools: [
+						{
+							name: '接单', icon: 'el-icon-plus', audit: [''], event: {
+								click: () => {
+									let value = (this.$refs.bill as any).getBillFormValue(); // 设置单据表单数据
+									console.log(value);
+									// (this as any).getOrder()
+								}
+							}
+						}
+					]
+				},
+				form: {
+					attr: {
+						size: 'small',
+					},
+					columns: [
+						[
+							{
+								span: 8,
+								label: '机构名称',
+								prop: 'organizationName',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '状态',
+								prop: 'status',
+								component: 'by-select',
+								compConfig: {
+									attr: {
+										placeholder: '请选择状态',
+										clearable: true,
+										data: [{
+											value: 0,
+											label: '未接单'
+										}, {
+											value: 1,
+											label: '已接单'
+										}]
+									}
+								}
+							},
+							{
+								span: 8,
+								label: '单据编号',
+								slot: true,
+								prop: 'orderNumber',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '机构',
+								slot: true,
+								prop: 'organizationId',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '交货地点',
+								slot: true,
+								prop: 'deliveryAddress',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '交货时间',
+								slot: true,
+								prop: 'deliveryData',
+								component: 'by-date-picker',
+								compConfig: {
+									format: 'yyyy-MM-dd',
+									type: 'datetime'
+								}
+							},
+							{
+								span: 8,
+								label: '交货人',
+								slot: true,
+								prop: 'delivery',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '联系方式',
+								slot: true,
+								prop: 'deliveryPhone',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '交货方式',
+								slot: true,
+								prop: 'deliveryWay',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '备注',
+								slot: true,
+								prop: 'remark',
+								component: 'by-input',
+							},
+						],
+					]
+				}
+			},
+			// 综合
+			all: {
+				search: {
+					attr: {
+						size: 'mini',
+					},
+					columns: [
+						[
+							{
+								span: 6,
+								label: '机构名称',
+								prop: 'organizationName',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入机构名称',
+										clearable: true
+									},
+								},
+							},
+							{
+								span: 6,
+								label: '单据编号',
+								prop: 'orderNumber',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入单据编号',
+										clearable: true
+									}
+								}
+							},
+							{
+								span: 6,
+								label: '交货地点',
+								prop: 'deliveryAddress',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入交货地点',
+										clearable: true
+									}
+								}
+							},
+						],
+						[
+							{
+								span: 6,
+								label: '交货人',
+								prop: 'delivery',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入交货人',
+										clearable: true
+									}
+								}
+							},
+							{
+								span: 6,
+								label: '状态',
+								prop: 'status',
+								component: 'by-select',
+								compConfig: {
+									attr: {
+										placeholder: '请选择状态',
+										clearable: true,
+										data: [{
+											value: 0,
+											label: '未接单'
+										}, {
+											value: 1,
+											label: '已接单'
+										}]
+									}
+								}
+							},
+							{
+								span: 6,
+								label: '交货时间',
+								prop: 'deliveryData',
+								component: 'by-date-picker',
+								compConfig: {
+									format: 'yyyy-MM-dd',
+									type: 'datetime'
+								}
+							},
+						]
+					]
+				},
+				tool: {
+					tools: {
+						order: true,
+						export: true,
+						search: true,
+						refresh: true
+					}
+				},
+				table: {
+					attr: {
+						height: 600,
+						size: 'mini',
+						seq: true,
+						align: 'center',
+						checkbox: true
+					},
+					columns: [
+						{
+							width: 200,
+							title: '机构名称',
+							field: 'organizationName',
+							isDetail: true,
+						},
+						{
+							width: 120,
+							title: '单据编号',
+							field: 'orderNumber',
+						},
+						{
+							width: 80,
+							title: '状态',
+							field: 'status',
+							component: Assembly,
+						},
+						{
+							width: 200,
+							title: '交货地点',
+							field: 'deliveryAddress',
+						},
+						{
+							width: 150,
+							title: '交货时间',
+							field: 'deliveryData',
+						},
+						{
+							title: '交货人',
+							field: 'delivery',
+						},
+						{
+							title: '交货人联系方式',
+							field: 'deliveryPhone',
+						},
+						{
+							title: '交货方式',
+							field: 'deliveryWay',
+						},
+						{
+							title: '备注',
+							field: 'remark',
+						},
+						{
+							width: 110,
+							title: '操作',
+							action: true,
+							plugins: [{
+								icon: 'el-icon-edit',
+								name: '查看',
+								audit: '',
+								event: {
+									click: (item : any) => {
+										(this as any).openEdit(item)
+									}
+								}
+							}, {
+								name: '接单',
+								event: {
+									click: (item : any) => (this as any).getOrder(item)
+								}
+							}]
+						}
+					]
+				}
+			},
+		}
+		created() {
+			this.timer = setInterval(() => {
+				this.getDataList()
+			}, 500)
+		}
+		// 工具栏方法
+		clickHandle(e : any) {
+			console.log(e);
+		}
+		// 保存新增
+		doSave() {
+			// (this.$refs.product as any).setShow(true)
+			(this as any).$refs.bill.$refs.billForm.validate().then(() => {
+				let query = (this as any).$refs.bill.$refs.billForm.getValue();
+				// query.suborderList = [] // 子表单数据
+				query.status = 0; // 默认未接单
+				api.saveList(query, 'supplyTaskOrder').then((res : any) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: '提交成功!'
+						});
+						this.getDataList();
+						(this.$refs.bill as any).showTab = 'all';
+						(this.$refs.bill as any).setBillFormValue({});
+					} else this.failHandle(res)
+				})
+			})
+		}
+		// 保存修改
+		orderTaking() {
+			let query : any = (this as any).$refs.bill.$refs.billForm.getValue();
+			api.updateList(query, 'supplyTaskOrder').then((res : any) => {
+				if (res.code === 200) {
+					this.$message({
+						type: 'success',
+						message: '保存成功!'
+					});
+					this.getDataList();
+					(this.$refs.bill as any).showTab = 'all';
+					(this.$refs.bill as any).setBillFormValue({});
+				} else this.failHandle(res)
+			})
+		}
+		getDataList() {
+			if (!this.$refs.bill) {
+				if (this.timeNum > 5) {
+					clearInterval(this.timer)
+				}
+				this.timeNum++;
+				return
+			}
+			clearInterval(this.timer)
+			// submitState: 提交状态
+			this.getPageList({}, 'all'); // 综合数据
+			// recycleBin
+			this.getPageList({ submitState: 0 }, 'draftsBox'); // 草稿箱数据
+			this.getPageList({ submitState: 1 }, 'smt'); // 已提交数据
+		}
+		// 获取分页数据
+		getPageList(query : any, type : any) {
+			api.pageList(query, 'supplyTaskOrder').then((res : any) => {
+				if (res.code === 200) {
+					(this.$refs.bill as any).setTabTableValue(type, res.data.records);
+					let page = {
+						pageNo: res.data.current, //当前页
+						pageSize: res.data.size, //每页条数
+						total: res.data.total //总条数
+					};
+					(this.$refs.bill as any).setTablePage(type, page)
+				} else this.failHandle(res)
+			})
+		}
+		// 打开新增
+		onAdd(e : any) {
+			console.log(e);
+			// this.orderType = '新增';
+			(this.$refs.bill as any).setBillFormValue({}); // 设置单据表单数据
+			(this.$refs.bill as any).showTab = 'bill';
+		}
+		// 打开编辑
+		openEdit(e : any) {
+			console.log(e);
+			e = e.row ? e.row : e;
+			// this.orderType = '编辑';
+			(this.$refs.bill as any).setBillFormValue(e); // 设置单据表单数据
+			(this.$refs.bill as any).showTab = 'bill';
+		}
+		// 搜索
+		search(parames : any) {
+			let query = parames.value
+			if (parames.type === 'draftsBox') query.submitState = 0 // 草稿箱数据
+			if (parames.type === 'smt') query.submitState = 1 // 草稿箱数据
+			this.getPageList(query, parames.type) // 获取分页数据
+		}
+		// 接单
+		getOrder(item : any) {
+			api.ordersaccepting({ ids: item.id }, 'supplyTaskOrder').then((res : any) => {
+				if (res.code === 200) {
+					// 是否跳转销售订单 this.$router.push()
+					this.getDataList();
+					this.$message({
+						type: 'success',
+						message: '接单成功!'
+					});
+				} else this.failHandle(res)
+
+			})
+		}
+		resert(parames : any) {
+			console.log('重置回传参数', parames);
+		}
+		// 工具栏接单
+		onOrder(n : string) {
+			console.log(n + ':工具栏执行操作onOrder')
+		}
+		// 运行错误
+		failHandle(err : any) {
+			let msg = err.msg ? err.msg : '运行错误!';
+			this.$message.error(msg)
+		}
+	}
+</script>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 637 - 292
src/views/audit/orderTask/index.vue


+ 39 - 34
src/views/audit/productClassification/index.vue

@@ -17,12 +17,11 @@
 			<by-tool :propConfig="toolConfig" ref="toolId" @clickHandle="clickHandle" />
 			<el-table :data="tableData" v-loading="loading" style="width: 100%;margin: 20px 0;" :show-overflow-tooltip="true"
 				row-key="id" ref="tableId" :tree-props="{children: 'children'}" @cell-click="doClick">
-				<!-- <el-table-column type="selection" width="55" /> -->
-				<el-table-column prop="name" label="名称" width="200" @click="clickMy" />
-				<el-table-column prop="shortName" label="简称" width="200" />
+				<el-table-column prop="name" label="名称" width="300" @click="clickMy" />
+				<el-table-column prop="shortName" label="简称" width="300" />
 				<el-table-column prop="status" label="状态">
 					<template slot-scope="scope">
-						<el-tag :type="scope.row.status===0?'primary':'danger'"
+						<el-tag size='mini' :type="scope.row.status===0?'primary':'danger'"
 							disable-transitions>{{scope.row.status===0?'正常':'禁用'}}</el-tag>
 					</template>
 				</el-table-column>
@@ -37,11 +36,8 @@
 			<!-- 新增/编辑弹窗 -->
 			<el-dialog :title="title+'分类'" :visible.sync="dialogFormVisible" width="30%">
 				<by-form :propConfig="addConfig" ref="addFormId">
-					<!-- 					<template v-slot:uploadImg>
-						<div class="upload-img">+</div>
-					</template> -->
 					<template v-slot:status class="clearfix">
-						<el-radio class="fl" style="margin-top: 8px;" v-model="radio" label="0">显示</el-radio>
+						<el-radio class="fl" style="margin-top: 8px;" v-model="radio" label="0">正常</el-radio>
 						<el-radio class="fl" style="margin-top: 8px;" v-model="radio" label="1">禁用</el-radio>
 					</template>
 					<template v-slot:category>
@@ -125,25 +121,19 @@
 					span: 6,
 					label: '状态',
 					prop: 'status',
-					component: 'by-input',
-					labelWidth: '70px',
-					compConfig: {
-						attr: {
-							placeholder: '请输入状态',
-							clearable: true
-						}
-					}
-				},
-				{
-					span: 6,
-					label: '备注',
-					prop: 'remark',
-					component: 'by-input',
 					labelWidth: '70px',
+					component: 'by-select',
 					compConfig: {
 						attr: {
-							placeholder: '请输入状态',
-							clearable: true
+							placeholder: '请选择状态',
+							clearable: true,
+							data: [{
+								value: 0,
+								label: '正常'
+							}, {
+								value: 1,
+								label: '禁用'
+							}]
 						}
 					}
 				},
@@ -166,33 +156,48 @@
 				[
 					{
 						labelWidth: '80px',
-						span: 20,
+						span: 24,
 						label: '上级分类',
-						slot: true,
 						prop: 'category',
+						component:'select-tree',
+						compConfig:{
+						  attr:{
+								width:400,
+						    label:'name',
+						    clearable:true,
+						    retConfig:{
+						      treeName:'name',
+						      treeId:'id'
+						    }
+						  },
+						  request:{
+						    url:'/maindata/maindataMaterialCategory/treeList'
+						  }
+						}
 					},
 					{
-						span: 20,
+						span: 24,
 						label: '名称',
 						prop: 'name',
 						component: 'by-input',
 						labelWidth: '80px',
 					},
 					{
-						span: 20,
+						span: 24,
 						label: '简称',
 						prop: 'shortName',
 						component: 'by-input',
 						labelWidth: '80px',
 					},
 					{
-						span: 20,
-						label: '显示状态',
+						span: 24,
+						label: '状态',
 						slot: true,
 						prop: 'status',
+						labelWidth: '80px',
 					},
 					{
-						span: 20,
+						span: 24,
 						label: '备注',
 						prop: 'remark',
 						component: 'by-input',
@@ -302,7 +307,6 @@
 				}
 			})
 		}
-
 		// 删除
 		doDelete() {
 			setTimeout(() => {
@@ -364,8 +368,9 @@
 		searchHandle() {
 			this.loading = true;
 			let query : any = (this.$refs.formId as any).getValue();
-			if (!query.name) return this.getDataList();
-			api.searchTreeList({ name: query.name || query.shortName }).then((res : any) => {
+			console.log(query);
+			if (!query) return this.getDataList();
+			api.searchTreeList(query).then((res : any) => {
 				if (res.code === 200) {
 					this.tableData = [];
 					this.tableData = res.data.records;

+ 59 - 29
src/views/audit/productManagement/index.vue

@@ -149,16 +149,19 @@
 					height: 560,
 				},
 				columns: [{
+					width: 250,
 					title: '名称',
 					field: 'name',
-					isDetail:true,
+					isDetail: true,
 				}, {
 					title: '简称',
 					field: 'shortName'
 				}, {
+					width: 120,
 					title: '财务编号',
 					field: 'accountingCode'
 				}, {
+					width: 120,
 					title: '国际码',
 					field: 'nsCode'
 				}, {
@@ -184,6 +187,7 @@
 					title: '库存',
 					field: 'stock'
 				}, {
+					width: 120,
 					title: '操作',
 					action: true,
 					plugins: [{
@@ -220,7 +224,7 @@
 				this.getDataList()
 			}, 500)
 		}
-		getDetail(e:any){
+		getDetail(e : any) {
 			(this as any).$router.push({ name: 'MaterialEdit', params: { baseInfo: e } });
 		}
 		// 获取树型导航数据
@@ -273,35 +277,61 @@
 		doDelete() {
 			let selectData = (this.$refs.moduleView as any).getSelectData()
 			let ids = '';
-			if (selectData.length>0) selectData.map((v : any) => {
-				ids += v.id + ','
-			})
-			ids = ids.slice(0,ids.length-1);
-			api.materialDelete({
-				ids: ids
-			}).then((res : any) => {
-				if (res.code === 200) {
-					this.getDataList();
-					this.$message({
-						type: 'success',
-						message: '删除成功!'
-					});
-				} else this.failHandle(res)
-			})
+			if (selectData.length > 0) {
+				selectData.map((v : any) => {
+					ids += v.id + ','
+				})
+			} else return this.$message({ type: 'warning', message: '请选择删除数据' })
+			ids = ids.slice(0, ids.length - 1);
+			this.$confirm('确定删除吗,此操作不能撤销!', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+				center: true
+			}).then(() => {
+				api.materialDelete({
+					ids: ids
+				}).then((res : any) => {
+					if (res.code === 200) {
+						this.getDataList();
+						this.$message({
+							type: 'success',
+							message: '删除成功!'
+						});
+					} else this.failHandle(res)
+				})
+			}).catch(() => {
+				this.$message({
+					type: 'info',
+					message: '已取消删除'
+				});
+			});
 		}
 		// 操作删除
-		doDelete2(item:any){
-			api.materialDelete({
-				ids: item.id
-			}).then((res : any) => {
-				if (res.code === 200) {
-					this.getDataList();
-					this.$message({
-						type: 'success',
-						message: '删除成功!'
-					});
-				} else this.failHandle(res)
-			})
+		doDelete2(item : any) {
+			this.$confirm('确定删除吗,此操作不能撤销!', '提示', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+				center: true
+			}).then(() => {
+				api.materialDelete({
+					ids: item.id
+				}).then((res : any) => {
+					if (res.code === 200) {
+						this.getDataList();
+						this.$message({
+							type: 'success',
+							message: '删除成功!'
+						});
+					} else this.failHandle(res)
+				})
+			}).catch(() => {
+				this.$message({
+					type: 'info',
+					message: '已取消删除'
+				});
+			});
 		}
 		// 导航切换
 		handleNodeClick(e : any) {

+ 531 - 0
src/views/audit/saleOrder/index.vue

@@ -0,0 +1,531 @@
+<template>
+	<div>
+		<by-bill :propConfig="config" @search="search" @onSmt="doSave" ref="bill" @onAdd="onAdd" @onOrder="onOrder"
+			@resert="resert" @clickHandle="clickHandle" @detail="openEdit">
+		</by-bill>
+	</div>
+</template>
+
+<script lang="ts">
+	import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+	import api from "@/api/order";
+	import Assembly from "@/benyun/components/Assembly/order.vue";
+	@Component
+	export default class OrderTask extends Vue {
+		// 右边
+		baseURL : any = process.env.VUE_APP_BASE_API
+		setStatusData : any = ''
+		timeNum = 0;
+		timer : any = null
+		config : any = {
+			attr: {
+				activeName: 'all'
+			},
+			// 单据
+			bill: {
+				tool: {
+					// tools: {
+					// 	smt: true,
+					// },
+					customTools: [
+						{
+							name: '拆单', icon: 'el-icon-plus', audit: [''], event: {
+								click: () => {
+									// (this as any).orderTaking()
+								}
+							}
+						}
+					]
+				},
+				form: {
+					attr: {
+						size: 'small',
+					},
+					columns: [
+						[
+							{
+								span: 8,
+								label: '机构名称',
+								prop: 'organizationName',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '单据编号',
+								slot: true,
+								prop: 'orderNumber',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '机构',
+								slot: true,
+								prop: 'organizationId',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '交货地点',
+								slot: true,
+								prop: 'deliveryAddress',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '交货时间',
+								slot: true,
+								prop: 'deliveryData',
+								component: 'by-date-picker',
+								compConfig: {
+									format: 'yyyy-MM-dd',
+									type: 'datetime'
+								}
+							},
+							{
+								span: 8,
+								label: '交货人',
+								slot: true,
+								prop: 'delivery',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '联系方式',
+								slot: true,
+								prop: 'deliveryPhone',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '交货方式',
+								slot: true,
+								prop: 'deliveryWay',
+								component: 'by-input',
+							},
+							{
+								span: 8,
+								label: '备注',
+								slot: true,
+								prop: 'remark',
+								component: 'by-input',
+							},
+						],
+					]
+				}
+			},
+			// 综合
+			all: {
+				search: {
+					attr: {
+						size: 'mini',
+					},
+					columns: [
+						[
+							{
+								span: 6,
+								label: '机构名称',
+								prop: 'organizationName',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入机构名称',
+										clearable: true
+									},
+								},
+							},
+							{
+								span: 6,
+								label: '单据编号',
+								prop: 'orderNumber',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入单据编号',
+										clearable: true
+									}
+								}
+							},
+							{
+								span: 6,
+								label: '交货地点',
+								prop: 'deliveryAddress',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入交货地点',
+										clearable: true
+									}
+								}
+							},
+						],
+						[
+							{
+								span: 6,
+								label: '交货人',
+								prop: 'delivery',
+								component: 'by-input',
+								compConfig: {
+									attr: {
+										placeholder: '请输入交货人',
+										clearable: true
+									}
+								}
+							},
+							{
+								span: 6,
+								label: '交货时间',
+								prop: 'deliveryData',
+								component: 'by-date-picker',
+								compConfig: {
+									format: 'yyyy-MM-dd',
+									type: 'datetime'
+								}
+							},
+						]
+					]
+				},
+				tool: {
+					tools: {
+						// export: true,
+						search: true,
+						refresh: true
+					},
+					customTools: [
+						{
+							name: '拆单', icon: 'el-icon-plus', audit: [''], event: {
+								click: () => {
+									// (this as any).orderTaking()
+								}
+							}
+						}
+					]
+				},
+				table: {
+					attr: {
+						height: 600,
+						size: 'mini',
+						seq: true,
+						align: 'center',
+						checkbox: true
+					},
+					columns: [
+						{
+							width: 200,
+							title: '机构名称',
+							field: 'organizationName',
+							isDetail: true,
+						},
+						{
+							width: 180,
+							title: '单据编号',
+							field: 'orderNumber',
+						},
+						{
+							width: 200,
+							title: '交货地点',
+							field: 'deliveryAddress',
+						},
+						{
+							width: 150,
+							title: '交货时间',
+							field: 'deliveryData',
+						},
+						{
+							title: '交货人',
+							field: 'delivery',
+						},
+						{
+							width: 120,
+							title: '交货人联系方式',
+							field: 'deliveryPhone',
+						},
+						{
+							title: '交货方式',
+							field: 'deliveryWay',
+						},
+						{
+							title: '备注',
+							field: 'remark',
+						},
+						{
+							width: 110,
+							title: '操作',
+							action: true,
+							plugins: [{
+								icon: 'el-icon-edit',
+								name: '查看',
+								audit: '',
+								event: {
+									click: (item : any) => {
+										(this as any).openEdit(item)
+									}
+								}
+							}, {
+								name: '拆单',
+								event: {
+									// click: (item : any) => (this as any).getOrder(item)
+								}
+							}]
+						}
+					]
+				}
+			},
+			// 回收站
+			// recycleBin: {
+			// 	search: {
+			// 		attr: {
+			// 			size: 'mini',
+			// 		},
+			// 		columns: [
+			// 			[
+			// 				{
+			// 					span: 6,
+			// 					label: '机构名称',
+			// 					prop: 'organizationName',
+			// 					component: 'by-input',
+			// 					compConfig: {
+			// 						attr: {
+			// 							placeholder: '请输入机构名称',
+			// 							clearable: true
+			// 						},
+			// 					},
+			// 				},
+			// 				{
+			// 					span: 6,
+			// 					label: '单据编号',
+			// 					prop: 'orderNumber',
+			// 					component: 'by-input',
+			// 					compConfig: {
+			// 						attr: {
+			// 							placeholder: '请输入单据编号',
+			// 							clearable: true
+			// 						}
+			// 					}
+			// 				},
+			// 				{
+			// 					span: 6,
+			// 					label: '交货地点',
+			// 					prop: 'deliveryAddress',
+			// 					component: 'by-input',
+			// 					compConfig: {
+			// 						attr: {
+			// 							placeholder: '请输入交货地点',
+			// 							clearable: true
+			// 						}
+			// 					}
+			// 				},
+			// 			],
+			// 			[
+			// 				{
+			// 					span: 6,
+			// 					label: '交货人',
+			// 					prop: 'delivery',
+			// 					component: 'by-input',
+			// 					compConfig: {
+			// 						attr: {
+			// 							placeholder: '请输入交货人',
+			// 							clearable: true
+			// 						}
+			// 					}
+			// 				},
+			// 				{
+			// 					span: 6,
+			// 					label: '交货时间',
+			// 					prop: 'deliveryData',
+			// 					component: 'by-date-picker',
+			// 					compConfig: {
+			// 						format: 'yyyy-MM-dd hh:ss:mm',
+			// 						type: 'datetime'
+			// 					}
+			// 				},
+			// 			]
+			// 		]
+			// 	},
+			// 	table: {
+			// 		attr: {
+			// 			height: 600,
+			// 			size: 'mini',
+			// 			seq: true,
+			// 			align: 'center',
+			// 			checkbox: true
+			// 		},
+			// 		columns: [
+			// 			{
+			// 				width: 70,
+			// 				title: '单据编号',
+			// 				field: 'orderNumber',
+			// 			},
+			// 			{
+			// 				width: 200,
+			// 				title: '机构名称',
+			// 				field: 'organizationName',
+			// 			},
+			// 			{
+			// 				width: 200,
+			// 				title: '交货地点',
+			// 				field: 'deliveryAddress',
+			// 			},
+			// 			{
+			// 				width: 150,
+			// 				title: '交货时间',
+			// 				field: 'deliveryData',
+			// 			},
+			// 			{
+			// 				title: '交货人',
+			// 				field: 'delivery',
+			// 			},
+			// 			{
+			// 				title: '交货人联系方式',
+			// 				field: 'deliveryPhone',
+			// 			},
+			// 			{
+			// 				title: '交货方式',
+			// 				field: 'deliveryWay',
+			// 			},
+			// 			{
+			// 				title: '备注',
+			// 				field: 'remark',
+			// 			},
+			// 		]
+			// 	}
+			
+			// }
+		}
+		created() {
+			this.timer = setInterval(() => {
+				this.getDataList()
+			}, 500)
+		}
+		// 工具栏方法
+		clickHandle(e : any) {
+			console.log(e);
+		}
+		// 保存新增
+		doSave() {
+			// (this.$refs.product as any).setShow(true)
+			(this as any).$refs.bill.$refs.billForm.validate().then(() => {
+				let query = (this as any).$refs.bill.$refs.billForm.getValue();
+				// query.suborderList = [] // 子表单数据
+				query.status = 0; // 默认未接单
+				api.saveList(query, 'supplyPurchaseOrder').then((res : any) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: '提交成功!'
+						});
+						this.getDataList();
+						(this.$refs.bill as any).showTab = 'all';
+						(this.$refs.bill as any).setBillFormValue({});
+					} else this.failHandle(res)
+				})
+			})
+		}
+		// 保存修改
+		orderTaking() {
+			let query : any = (this as any).$refs.bill.$refs.billForm.getValue();
+			api.updateList(query, 'supplyPurchaseOrder').then((res : any) => {
+				if (res.code === 200) {
+					this.$message({
+						type: 'success',
+						message: '保存成功!'
+					});
+					this.getDataList();
+					(this.$refs.bill as any).showTab = 'all';
+					(this.$refs.bill as any).setBillFormValue({});
+				} else this.failHandle(res)
+			})
+		}
+		getDataList() {
+			if (!this.$refs.bill) {
+				if (this.timeNum > 5) {
+					clearInterval(this.timer)
+				}
+				this.timeNum++;
+				return
+			}
+			clearInterval(this.timer)
+			// submitState: 提交状态
+			this.getPageList({}, 'all'); // 综合数据
+			// recycleBin
+			// this.getPageList({ submitState: 0 }, 'draftsBox'); // 草稿箱数据
+			// this.getPageList({ submitState: 1 }, 'smt'); // 已提交数据
+			// this.getSelectDeleteList('supplyPurchaseOrder') // 回收站数据
+		}
+		// 获取分页数据
+		getPageList(query : any, type : any) {
+			api.pageList(query, 'supplyPurchaseOrder').then((res : any) => {
+				if (res.code === 200) {
+					(this.$refs.bill as any).setTabTableValue(type, res.data.records);
+					let page = {
+						pageNo: res.data.current, //当前页
+						pageSize: res.data.size, //每页条数
+						total: res.data.total //总条数
+					};
+					(this.$refs.bill as any).setTablePage(type, page)
+				} else this.failHandle(res)
+			})
+		}
+		// 回收站数据
+		getSelectDeleteList(url:any){
+			api.selectDeleteList(url).then((res : any) => {
+				if (res.code === 200) {
+					(this.$refs.bill as any).setTabTableValue('recycleBin', res.data);
+					let page = {
+						pageNo: res.data.current, //当前页
+						pageSize: res.data.size, //每页条数
+						total: res.data.total //总条数
+					};
+					(this.$refs.bill as any).setTablePage('recycleBin', page)
+				} else this.failHandle(res)
+			});
+		}
+		// 打开新增
+		onAdd(e : any) {
+			console.log(e);
+			// this.orderType = '新增';
+			(this.$refs.bill as any).setBillFormValue({}); // 设置单据表单数据
+			(this.$refs.bill as any).showTab = 'bill';
+		}
+		// 打开编辑
+		openEdit(e : any) {
+			console.log(e);
+			e = e.row ? e.row : e;
+			// this.orderType = '编辑';
+			(this.$refs.bill as any).setBillFormValue(e); // 设置单据表单数据
+			(this.$refs.bill as any).showTab = 'bill';
+		}
+		// 搜索
+		search(parames : any) {
+			let query = parames.value
+			if (parames.type === 'draftsBox') query.submitState = 0 // 草稿箱数据
+			if (parames.type === 'smt') query.submitState = 1 // 已提交数据
+			this.getPageList(query, parames.type) // 获取分页数据
+		}
+		// 接单
+		getOrder(item : any) {
+			api.ordersaccepting({ ids: item.id }, 'supplyPurchaseOrder').then((res : any) => {
+				if (res.code === 200) {
+					// 是否跳转销售订单 this.$router.push()
+					this.getDataList();
+					this.$message({
+						type: 'success',
+						message: '接单成功!'
+					});
+				} else this.failHandle(res)
+
+			})
+		}
+		resert(parames : any) {
+			console.log('重置回传参数', parames);
+		}
+		// 工具栏接单
+		onOrder(n : string) {
+			console.log(n + ':工具栏执行操作onOrder')
+		}
+		// 运行错误
+		failHandle(err : any) {
+			let msg = err.msg ? err.msg : '运行错误!';
+			this.$message.error(msg)
+		}
+	}
+</script>

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است