Переглянути джерело

Merge branch 'master' of http://git.qiniu1314.com/cmy/zhuangxiuAdmin

cmy 7 місяців тому
батько
коміт
301f441e46

+ 9 - 4
src/api/order/index.ts

@@ -10,9 +10,14 @@ export const getOrderDetail = (id: number): Promise<IResponse> => {
 export const assignSalesman = (id:number,data: any): Promise<IResponse> => {
 export const assignSalesman = (id:number,data: any): Promise<IResponse> => {
   return request.post({ url: `${REQUEST_BASE}/decoration/order/assign/${id}`, data })
   return request.post({ url: `${REQUEST_BASE}/decoration/order/assign/${id}`, data })
 }
 }
-export const assignDesigner = (params: searchOrder): Promise<IResponse> => {
-  return request.post({ url: `${REQUEST_BASE}/decoration/order`, params })
+export const assignDesigner = (id:number,data: any): Promise<IResponse> => {
+  return request.post({ url: `${REQUEST_BASE}/decoration/order/designer/${id}`, data })
 }
 }
 export const assignWorker = (params: searchOrder): Promise<IResponse> => {
 export const assignWorker = (params: searchOrder): Promise<IResponse> => {
-  return request.post({ url: `${REQUEST_BASE}/decoration/order`, params })
-}
+  return request.post({ url: `${REQUEST_BASE}/decoration/order/`, params })
+}
+export const passAddItem = (id: number): Promise<IResponse> => {
+  return request.post({ url: `${REQUEST_BASE}/decoration/order/pass/${id}`})
+}
+//decoration/order/pass/:id
+

+ 113 - 9
src/views/Order/orderList/components/Detail.vue

@@ -2,6 +2,10 @@
 import { PropType, ref } from 'vue'
 import { PropType, ref } from 'vue'
 import { Descriptions, DescriptionsSchema } from '@/components/Descriptions'
 import { Descriptions, DescriptionsSchema } from '@/components/Descriptions'
 import { SalespersonButtom } from '@/components/SalespersonList'
 import { SalespersonButtom } from '@/components/SalespersonList'
+import { DesignerButtom } from '@/components/designerList'
+import { WorkerButtom } from '@/components/WorkerList'
+import  { ElButton,ElMessage} from 'element-plus'
+import { assignSalesman,assignDesigner,assignWorker} from '@/api/order'
 
 
 const props = defineProps({
 const props = defineProps({
   currentRow: {
   currentRow: {
@@ -28,18 +32,20 @@ const menu = [
   },
   },
   {
   {
     field: 'store.name',
     field: 'store.name',
-    label: '门店'
+    label: '门店',
+	span: 24,
   },
   },
   {
   {
-    field: 'salesperson.name',
+    field: 'salesperson',
     label: '业务员',
     label: '业务员',
+	span: 24,
 	slots: {
 	slots: {
 		default: (data)=> {
 		default: (data)=> {
 			if(data.salesperson_id) {
 			if(data.salesperson_id) {
 				return (
 				return (
 					<>{data.salesperson.name}</>
 					<>{data.salesperson.name}</>
 				)
 				)
-			}else {
+			}else if(data.step <= 3){
 				return (
 				return (
 				  <>
 				  <>
 				    <SalespersonButtom
 				    <SalespersonButtom
@@ -48,20 +54,79 @@ const menu = [
 				        checkedSalesperson(res)
 				        checkedSalesperson(res)
 				      }}
 				      }}
 				    ></SalespersonButtom>
 				    ></SalespersonButtom>
+					 <ElButton type="primary"  style="margin-left: 10px;" onClick={()=> setSalesperson()}>确定</ElButton>
 				  </>
 				  </>
 				)
 				)
+			}else {
+				return (
+				<></>
+				)
 			}
 			}
 			
 			
 		}
 		}
 	}
 	}
   },
   },
   {
   {
-    field: 'designer.name',
-    label: '设计师'
+    field: 'designer',
+    label: '设计师',
+	span: 24,
+	slots: {
+		default: (data)=> {
+			if(data.designer_id > 0) {
+				return (
+					<>{data.designer.name}</>
+				)
+			}else if(data.step == 1){
+				return (
+				  <>
+				    <DesignerButtom
+				      v-model={data.designer_id}
+				      onChange={(res) => {
+				        checkedDesigner(res)
+				      }}
+				    ></DesignerButtom>
+					 <ElButton type="primary"  style="margin-left: 10px;" onClick={()=> setDesigner()}>确定</ElButton>
+				  </>
+				)
+			}else {
+				return (
+				<></>
+				)
+			}
+			
+		}
+	}
   },
   },
   {
   {
-    field: 'worker.name',
-    label: '安装工'
+    field: 'worker',
+    label: '安装工',
+	span: 24,
+	slots: {
+		default: (data)=> {
+			if(data.worker_id > 0) {
+				return (
+					<>{data.worker.name}</>
+				)
+			}else if(data.step == 3){
+				return (
+				  <>
+				    <WorkerButtom
+				      v-model={data.worker_id}
+				      onChange={(res) => {
+				        checkedWorker(res)
+				      }}
+				    ></WorkerButtom>
+					 <ElButton type="primary"  style="margin-left: 10px;" onClick={()=> setWorker()}>确定</ElButton>
+				  </>
+				)
+			}else {
+				return (
+				<></>
+				)
+			}
+			
+		}
+	}
   },
   },
   {
   {
     field: 'price',
     field: 'price',
@@ -85,11 +150,50 @@ const menu = [
 	span: 24,
 	span: 24,
   },
   },
 ]
 ]
+const salesperson = ref({})
+const designer = ref({})
+const worker = ref({})
+const emit = defineEmits(['checkedSalesperson','checkedWorker','checkedDesigner']) // 定义事件
 
 
-const emit = defineEmits(['checkedSalesperson']) // 定义事件
+const setSalesperson = async () => {
+	console.log(props.currentRow.id)
+	if(!salesperson.value.id) return ElMessage.error('请选择业务员');
+	await assignSalesman(props.currentRow.id,{salesperson_id: salesperson.value.id})
+	ElMessage({
+	  type: 'success',
+	  message: `指派成功`
+	})
+	emit('checkedSalesperson', salesperson)
+}
+const setWorker = async () => {
+	if(!worker.value.id) return ElMessage.error('请选择安装工');
+	await assignWorker(props.currentRow.worker_order.id,{designer_id: worker.value.id})
+	ElMessage({
+	  type: 'success',
+	  message: `指派成功`
+	})
+	emit('checkedWorker', worker)
+}
+const setDesigner = async () => {
+	if(!designer.value.id) return ElMessage.error('请选择设计师');
+	await assignDesigner(props.currentRow.designer_order.id,{designer_id: designer.value.id})
+	ElMessage({
+	  type: 'success',
+	  message: `指派成功`
+	})
+	emit('checkedDesigner', designer)
+}
+const checkedDesigner = (e) => {
+	console.log(e,'xuanz')
+	designer.value = e
+}
+const checkedWorker = (e) => {
+	console.log(e,'xuanz')
+	worker.value = e
+}
 const checkedSalesperson = (e) => {
 const checkedSalesperson = (e) => {
 	console.log(e,'xuanz')
 	console.log(e,'xuanz')
-	emit('checkedSalesperson', e) // 触发 'update' 事件,并传递参数
+	salesperson.value = e
 }
 }
 
 
 const detailSchema = ref<DescriptionsSchema[]>(menu)
 const detailSchema = ref<DescriptionsSchema[]>(menu)

+ 1 - 2
src/views/Order/orderList/components/Draft.vue

@@ -1,7 +1,6 @@
 <script setup lang="tsx">
 <script setup lang="tsx">
 import { PropType, ref } from 'vue'
 import { PropType, ref } from 'vue'
 import { Descriptions, DescriptionsSchema } from '@/components/Descriptions'
 import { Descriptions, DescriptionsSchema } from '@/components/Descriptions'
-// import { Icon } from '@/components/Icon'
 import { ElImage } from 'element-plus'
 import { ElImage } from 'element-plus'
 
 
 const props = defineProps({
 const props = defineProps({
@@ -23,7 +22,7 @@ const menu = [
   },
   },
   {
   {
     field: 'draft[0].status_chs',
     field: 'draft[0].status_chs',
-    label: '状态'
+    label: '审核状态'
   },
   },
   {
   {
     field: 'draft[0].mark',
     field: 'draft[0].mark',

+ 52 - 3
src/views/Order/orderList/components/addItem.vue

@@ -2,12 +2,17 @@
 import { PropType, ref } from 'vue'
 import { PropType, ref } from 'vue'
 import { Descriptions, DescriptionsSchema } from '@/components/Descriptions'
 import { Descriptions, DescriptionsSchema } from '@/components/Descriptions'
 // import { Icon } from '@/components/Icon'
 // import { Icon } from '@/components/Icon'
-import {ElImage,ElButton } from 'element-plus'
+import {ElImage, ElButton, ElMessage, ElMessageBox } from 'element-plus'
+import { passAddItem} from '@/api/order'
 
 
 const props = defineProps({
 const props = defineProps({
   currentRow: {
   currentRow: {
     type: Object as PropType<any>,
     type: Object as PropType<any>,
     default: () => undefined
     default: () => undefined
+  },
+  isAuth: {
+	  type: Boolean,
+	  default: false
   }
   }
 })
 })
 //
 //
@@ -31,7 +36,20 @@ const menu = [
   },
   },
   {
   {
     field: 'status_chs',
     field: 'status_chs',
-    label: '状态',
+    label: '审核状态',
+	slots: {
+		default: (data) => {
+			if(props.isAuth && data.status == 0) {
+				return (
+					<><ElButton type="primary" link size="small" onClick={()=> goPassAddItem(data)}>通过</ElButton><ElButton type="primary" link size="small">拒绝</ElButton></>
+				)
+			}else {
+				return (
+					<>{data.status_chs}</>
+				)
+			}
+		}
+	}
   },
   },
   {
   {
     field: 'cart_infos',
     field: 'cart_infos',
@@ -86,8 +104,39 @@ const menu = [
   	}
   	}
   },
   },
 ]
 ]
-
+const emit = defineEmits(['passAddItem']) // 定义事件
 const detailSchema = ref<DescriptionsSchema[]>(menu)
 const detailSchema = ref<DescriptionsSchema[]>(menu)
+const goPassAddItem = async (e) => {
+	await passAddItem(e.id)
+	ElMessage({
+	  type: 'success',
+	  message: `审核完成`
+	})
+	emit('passAddItem')
+}
+const open = () => {
+  ElMessageBox.confirm(
+    '您确定拒绝当前增项?',
+    'Warning',
+    {
+      confirmButtonText: '确认',
+      cancelButtonText: '取消',
+      type: 'warning',
+    }
+  )
+    .then(() => {
+      // ElMessage({
+      //   type: 'success',
+      //   message: 'Delete completed',
+      // })
+    })
+    .catch(() => {
+      ElMessage({
+        type: 'info',
+        message: 'Delete canceled',
+      })
+    })
+}
 </script>
 </script>
 
 
 <template>
 <template>

+ 61 - 19
src/views/Order/orderList/index.vue

@@ -164,13 +164,22 @@ const tableColumns = reactive<TableColumn[]>([
     slots: {
     slots: {
       default: (data: any) => {
       default: (data: any) => {
         const row = data.row;
         const row = data.row;
-        return (
-          <>
-		  <ElButton type="primary" link size="small"  onClick={() => action('edit', row)}>详情</ElButton>
-		  <ElDivider direction="vertical" />
-		  <ElButton type="primary" link size="small">详情</ElButton>
-          </>
-        )
+		if(row.add_item.length > 0 && row.add_item[0].status == 0) {
+			return (
+			  <>
+			  <ElButton type="primary" link size="small" onClick={() => action('edit', row)}>详情</ElButton>
+			  <ElDivider direction="vertical" />
+			  <ElButton type="primary" link size="small" onClick={() => action('auth', row)}>审核增项</ElButton>
+			  </>
+			)
+		}else {
+			return (
+			  <>
+			  <ElButton type="primary" link size="small" onClick={() => action('edit', row)}>详情</ElButton>
+			  </>
+			)
+		}
+        
       }
       }
     }
     }
   }
   }
@@ -267,6 +276,8 @@ const tabsConfig = reactive([
 ])
 ])
 const activeNames = ref(0)
 const activeNames = ref(0)
 const currentRow = ref()
 const currentRow = ref()
+const isEdit = ref(false)
+const isAuth = ref(false)
 const tabsConfigs = reactive([
 const tabsConfigs = reactive([
   {
   {
     title: '基本信息',
     title: '基本信息',
@@ -288,9 +299,27 @@ const getLists = (e)=> {
 	console.log(e)
 	console.log(e)
 }
 }
 const checkedSalesperson = (e) => {
 const checkedSalesperson = (e) => {
-	console.log(e)
-	currentRow.value.salesperson_id = e.id;
-	currentRow.value.salesperson = e
+	console.log(e,'x',e.value)
+	currentRow.value.salesperson_id = e.value.id;
+	currentRow.value.salesperson = e.value
+	getList()
+}
+const checkedDesigner = (e) => {
+	console.log(e,'x',e.value)
+	currentRow.value.designer_id = e.value.id;
+	currentRow.value.designer = e.value
+	getList()
+}
+const checkedWorker = (e) => {
+	console.log(e,'x',e.value)
+	currentRow.value.worker_id = e.value.id;
+	currentRow.value.worker = e.value
+	getList()
+}
+const passAddItem = () => {
+	isAuth.value = false
+	// currentRow.value.add_item[0].status = 1
+	getList()
 }
 }
 const action = async (type: string, row?: any) => {
 const action = async (type: string, row?: any) => {
   // actionType.value = type
   // actionType.value = type
@@ -301,12 +330,18 @@ const action = async (type: string, row?: any) => {
   
   
   //   console.log(currentRow, 'currentRow')
   //   console.log(currentRow, 'currentRow')
   // }
   // }
-   const res = await getOrderDetail(row.id)
-  if (type == 'edit') {
-    dialogTitle.value = '详情'
-    currentRow.value = res.data
-	console.log(row,'row');
-    dialogVisible.value = true
+	const res = await getOrderDetail(row.id)
+    if(type == 'edit') {
+		isEdit.value = true
+		dialogTitle.value = '详情'
+		currentRow.value = res.data
+		dialogVisible.value = true
+	}else if(type == 'auth') {
+		isAuth.value = true
+		activeNames.value = 2
+		dialogTitle.value = '详情'
+		currentRow.value = res.data
+		dialogVisible.value = true
 	}
 	}
 }
 }
 // const goAssignSalesman = async (id:number, data: any) => {
 // const goAssignSalesman = async (id:number, data: any) => {
@@ -346,10 +381,17 @@ const action = async (type: string, row?: any) => {
   
   
   <ElDrawer
   <ElDrawer
       v-model="dialogVisible"
       v-model="dialogVisible"
-      :title="dialogTitle"
       direction="rtl"
       direction="rtl"
 	  size="50%"
 	  size="50%"
     >
     >
+	<!-- // :title="dialogTitle" -->
+	<template #header="{ titleId, titleClass }">
+	      <h4 :id="titleId" :class="titleClass">{{dialogTitle}}</h4>
+	      <!-- <el-button type="danger" @click="close">
+	        <el-icon class="el-icon--left"><CircleCloseFilled /></el-icon>
+	        Close
+	      </el-button> -->
+	    </template>
       <ElTabs v-model="activeNames" >
       <ElTabs v-model="activeNames" >
         <ElTabPane
         <ElTabPane
           v-for="(item, index) in tabsConfigs"
           v-for="(item, index) in tabsConfigs"
@@ -358,8 +400,8 @@ const action = async (type: string, row?: any) => {
           :name="index"
           :name="index"
         />
         />
       </ElTabs>
       </ElTabs>
-	  <Detail v-if="activeNames === 0" :current-row="currentRow" @checkedSalesperson="checkedSalesperson"/>
+	  <Detail v-if="activeNames === 0" :current-row="currentRow" :isEdit="isEdit" @checkedSalesperson="checkedSalesperson" @checkedDesigner="checkedDesigner"/>
 	  <Draft v-if="activeNames === 1" :current-row="currentRow" />
 	  <Draft v-if="activeNames === 1" :current-row="currentRow" />
-	  <addItem v-if="activeNames === 2" :current-row="currentRow" />
+	  <addItem v-if="activeNames === 2" :current-row="currentRow" :isAuth="isAuth" @passAddItem="passAddItem"/>
     </ElDrawer>
     </ElDrawer>
 </template>
 </template>