wangxin 1 anno fa
parent
commit
7176c42d23

+ 4 - 3
src/api/business/outsourcedOrder.js

@@ -28,8 +28,8 @@ export function carrierForOutsource(query) {
 }
 
 
-// 新增外协单
-export function addOrder(data) {
+// 保存外协单
+export function saveOrder(data) {
 	return request({
 		url: baseUrl + '/business/outsource/add',
 		method: 'post',
@@ -37,6 +37,7 @@ export function addOrder(data) {
 	})
 }
 
+
 export function processesForOutsource(data) {
 	return request({
 		url: baseUrl + '/business/outsource/processesForOutsource',
@@ -48,7 +49,7 @@ export function processesForOutsource(data) {
 
 
 // 修改外协单
-export function updateOrder(data) {
+export function submitOrder(data) {
 	return request({
 		url: baseUrl + '/business/outsource',
 		method: 'put',

+ 76 - 57
src/views/business/outsource/form.vue

@@ -12,34 +12,30 @@
           <el-icon><Document /></el-icon>
           <span>外协单信息</span>
         </span>
-        <el-button-group>
-          <el-button
-            v-if="editStatus"
-            type="primary"
-            icon="Finished"
-            @click="submitForm"
-          >
-            保存
-          </el-button>
-          <el-button
-            v-else
-            type="warning"
-            icon="Edit"
-            @click="editStatus = true"
-            >编辑</el-button
-          >
-          <el-button
-            v-if="form.id && editStatus"
-            type="info"
-            icon="Close"
-            @click="editStatus = false"
-          >
-            取消编辑
-          </el-button>
-          <el-button v-if="form.id" type="success" @click="getForm">
-            <i class="fa fa-refresh" aria-hidden="true" /> 刷新
-          </el-button>
-        </el-button-group>
+
+        <el-button
+          v-if="editStatus"
+          type="primary"
+          icon="check"
+          @click="saveFrom"
+        >
+          保存
+        </el-button>
+        <el-button
+          v-if="editStatus"
+          type="primary"
+          icon="Finished"
+          @click="submitFrom"
+          >保存并提交</el-button
+        >
+        <!-- <el-button
+          v-if="form.id && editStatus"
+          type="info"
+          icon="Close"
+          @click="editStatus = false"
+        >
+          取消编辑
+        </el-button> -->
 
         <div class="close-btn" @click="cancel">
           <i class="fa fa-times" aria-hidden="true" />
@@ -278,7 +274,7 @@
                     />
                   </template>
                 </el-input>
-                <span v-else>{{ selectProceseName(scope.row) }}</span>
+                <span v-else>{{ scope.row.processNames }}</span>
               </template>
             </el-table-column>
             <el-table-column label="备注" align="center" prop="remark">
@@ -338,8 +334,8 @@
 <script setup>
 import {
   getOrder,
-  addOrder,
-  updateOrder,
+  saveOrder,
+  submitOrder,
 } from "@/api/business/outsourcedOrder";
 import dialogCarrier from "./DialogCarrier";
 import dialogSuppliers from "./DialogSuppliers";
@@ -373,7 +369,7 @@ const { getList, deliveryMethod, packagingMethod, settlementType } =
 const loading = ref(false);
 const multiple = ref(true);
 const visible = ref(false);
-const editStatus = ref(false);
+const editStatus = ref(true);
 const isFullscreen = ref(false);
 const webHost = import.meta.env.VITE_APP_BASE_API;
 const form = ref({});
@@ -402,16 +398,17 @@ function open(id) {
 function getForm() {
   loading.value = true;
   getOrder(form.value.id).then((response) => {
-    loading.value = false;
     form.value = response.data;
+    editStatus.value = form.value.isSubmit == 0;
+    loading.value = false;
   });
 }
 
 /** 查询表单信息  */
-function selectProceseName(row) {
-  row.processNames = row.processes.map((item) => item.processAlias).join(",");
-  return row.processNames;
-}
+// function selectProceseName(row) {
+//   row.processNames = row.processes.map((item) => item.processAlias).join(",");
+//   return row.processNames;
+// }
 
 function selectText(value, data) {
   if (value) {
@@ -447,39 +444,61 @@ function reset() {
   };
   proxy.resetForm("formRef");
 }
-/** 提交按钮 */
-function submitForm() {
+/** 保存 */
+function saveFrom() {
   if (!form.value.details || form.value.details.length == 0) {
     proxy.$modal.msgError("请添加产品明细");
     return;
   }
-  form.value.details.forEach((item) => {
-    if (!item.processNames) {
-      proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
+  proxy.$refs["formRef"].validate((valid) => {
+    for (const item of form.value.details) {
+      if (!item.processNames) {
+        proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
+        return;
+      }
+    }
+    if (valid) {
+      saveOrder(form.value).then((response) => {
+        if (response.code == 200) {
+          proxy.$modal.msgSuccess("保存成功");
+          visible.value = false;
+          getList.value();
+        }
+      });
     }
+  });
+}
+
+function save() {}
+
+/** 保存并提交 */
+function submitFrom() {
+  proxy.$modal.confirm("是否确定提交吗,提交后不可修改").then(function () {
     return;
   });
+
+  if (!form.value.details || form.value.details.length == 0) {
+    proxy.$modal.msgError("请添加产品明细");
+    return;
+  }
+
   proxy.$refs["formRef"].validate((valid) => {
     if (valid) {
-      if (form.value.id != null) {
-        updateOrder(form.value).then((response) => {
-          proxy.$modal.msgSuccess("修改成功");
-          visible.value = false;
-          getList.value();
-        });
-      } else {
-        console.log("提交", form.value);
-        addOrder(form.value).then((response) => {
-          if (response.code == 200) {
-            proxy.$modal.msgSuccess("新增成功");
-            visible.value = false;
-            getList.value();
-          }
-        });
+      for (const item of form.value.details) {
+        if (!item.processNames) {
+          proxy.$modal.msgError("请选择" + item.lotCode + "批次的工序");
+          return;
+        }
       }
+      submitOrder(form.value).then((response) => {
+        proxy.$modal.msgSuccess("提交成功");
+        visible.value = false;
+        getList.value();
+      });
     }
   });
 }
+
 /***************************** 外协商对话框相关 *****************************/
 // 打开外协商选择对话框
 const handleShowDialogSuppliers = () => {

+ 290 - 202
src/views/business/outsource/index.vue

@@ -1,251 +1,339 @@
 <template>
-	<div class="page-container column-container">
-		<!-- 搜索区 -->
-		<el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true">
-			<el-form-item label="单据号:" prop="formCode">
-				<el-input
-					v-model="queryParams.formCode"
-					placeholder="请输入单据号"
-					style="width: 144px"
-					clearable
-					@keyup.enter="handleQuery"
-				/>
-			</el-form-item>
-			<el-form-item label="表单日期:" prop="formDate">
-				<el-date-picker
-					v-model="queryParams.formDate"
-					type="date"
-					style="width: 144px"
-					clearable
-					value-format="YYYY-MM-DD"
-					placeholder="请选择表单日期"
-				>
-				</el-date-picker>
-			</el-form-item>
-			<el-form-item label="外协商名称:" prop="supplierName">
-				<el-input
-					v-model="queryParams.supplierName"
-					placeholder="请输入关键字"
-					style="width: 144px"
-					clearable
-					@keyup.enter="handleQuery"
-				/>
-			</el-form-item>
-			<el-form-item label="送货方式:" prop="deliveryMethod">
-				<el-select v-model="queryParams.deliveryMethod" style="width: 144px" clearable placeholder="请选择">
-					<el-option v-for="dict in delivery_method" :key="dict.value" :label="dict.label" :value="dict.value" />
-				</el-select>
-			</el-form-item>
-			<el-form-item label="带箱方式:" prop="packagingMethod">
-				<el-select v-model="queryParams.packagingMethod" style="width: 144px" clearable placeholder="请选择">
-					<el-option v-for="dict in packaging_method" :key="dict.value" :label="dict.label" :value="dict.value" />
-				</el-select>
-			</el-form-item>
-			<el-form-item>
-				<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
-				<el-button icon="Refresh" @click="resetQuery">重置</el-button>
-			</el-form-item>
-		</el-form>
-
-		<!-- 功能按钮区 -->
-		<div class="list-btns-container">
-			<el-button type="primary" icon="Plus" @click="handleAdd" v-hasPermi="['business:outsource:add']">
-				新增
-			</el-button>
-			<el-button
-				type="danger"
-				icon="Delete"
-				:disabled="multiple"
-				@click="handleDelete"
-				v-hasPermi="['business:outsource:remove']"
-			>
-				删除
-			</el-button>
-			<!--
+  <div class="page-container column-container">
+    <!-- 搜索区 -->
+    <el-form
+      class="list-search-container"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+    >
+      <el-form-item label="单据号:" prop="formCode">
+        <el-input
+          v-model="queryParams.formCode"
+          placeholder="请输入单据号"
+          style="width: 144px"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="表单日期:" prop="formDate">
+        <el-date-picker
+          v-model="queryParams.formDate"
+          type="date"
+          style="width: 144px"
+          clearable
+          value-format="YYYY-MM-DD"
+          placeholder="请选择表单日期"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="外协商名称:" prop="supplierName">
+        <el-input
+          v-model="queryParams.supplierName"
+          placeholder="请输入关键字"
+          style="width: 144px"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="送货方式:" prop="deliveryMethod">
+        <el-select
+          v-model="queryParams.deliveryMethod"
+          style="width: 144px"
+          clearable
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="dict in delivery_method"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="带箱方式:" prop="packagingMethod">
+        <el-select
+          v-model="queryParams.packagingMethod"
+          style="width: 144px"
+          clearable
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="dict in packaging_method"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <!-- 功能按钮区 -->
+    <div class="list-btns-container">
+      <el-button
+        type="primary"
+        icon="Plus"
+        @click="handleAdd"
+        v-hasPermi="['business:outsource:add']"
+      >
+        新增
+      </el-button>
+      <el-button
+        type="danger"
+        icon="Delete"
+        :disabled="multiple"
+        @click="handleDelete"
+        v-hasPermi="['business:outsource:remove']"
+      >
+        删除
+      </el-button>
+      <!--
 			<el-button type="warning" icon="Download" @click="handleExport" v-hasPermi="['business:outsource:export']">
 				导出
 			</el-button>
 			<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
 			-->
-		</div>
-
-		<!-- 渲染数据区 -->
-		<div class="el-table-container">
-			<div class="el-table-inner-container">
-				<el-table
-					v-loading="loading"
-					:data="orderList"
-					size="small"
-					border
-					height="100%"
-					@selection-change="handleSelectionChange"
-				>
-					<el-table-column type="selection" width="48" align="center" />
-					<el-table-column label="外协单号" align="center" prop="formCode" width="120" />
-					<el-table-column label="外协日期" align="center" prop="formDate" width="120">
-						<template #default="scope">
-							{{ parseTime(scope.row.formDate, '{y}-{m}-{d}') }}
-						</template>
-					</el-table-column>
-					<el-table-column label="外协商名称" align="center" prop="supplierName" width="320" />
-					<el-table-column label="结算方式" align="center" prop="settlementType" width="120">
-						<template #default="scope">
-							<dict-tag :options="settlement_type" :value="scope.row.settlementType" />
-						</template>
-					</el-table-column>
-					<el-table-column label="送货方式" align="center" prop="deliveryMethod" width="120">
-						<template #default="scope">
-							<dict-tag :options="delivery_method" :value="scope.row.deliveryMethod" />
-						</template>
-					</el-table-column>
-					<el-table-column label="带箱方式" align="center" prop="packagingMethod" width="120">
-						<template #default="scope">
-							<dict-tag :options="packaging_method" :value="scope.row.packagingMethod" />
-						</template>
-					</el-table-column>
-					<el-table-column label="备注" align="center" prop="remark" />
-					<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="144">
-						<template #default="scope">
-							<el-button
-								link
-								type="warning"
-								icon="Edit"
-								@click="handleUpdate(scope.row)"
-								v-hasPermi="['business:outsource:edit']"
-							>
-								编辑
-							</el-button>
-							<el-button
-								link
-								type="danger"
-								icon="Delete"
-								@click="handleDelete(scope.row)"
-								v-hasPermi="['business:outsource:remove']"
-							>
-								删除
-							</el-button>
-						</template>
-					</el-table-column>
-				</el-table>
-			</div>
-		</div>
-
-		<!-- 分页 -->
-		<pagination
-			v-show="total > 0"
-			:total="total"
-			v-model:page="queryParams.pageNum"
-			v-model:limit="queryParams.pageSize"
-			@pagination="getList"
-		/>
-
-		<!-- 表单 -->
-		<order-form
-			ref="orderRef"
-			:get-list="getList"
-			:delivery-method="delivery_method"
-			:settlement-type="settlement_type"
-			:packaging-method="packaging_method"
-		/>
-	</div>
+    </div>
+
+    <!-- 渲染数据区 -->
+    <div class="el-table-container">
+      <div class="el-table-inner-container">
+        <el-table
+          v-loading="loading"
+          :data="orderList"
+          size="small"
+          border
+          height="100%"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column type="selection" width="48" align="center" />
+          <el-table-column
+            label="外协单号"
+            align="center"
+            prop="formCode"
+            width="120"
+          />
+          <el-table-column
+            label="外协日期"
+            align="center"
+            prop="formDate"
+            width="120"
+          >
+            <template #default="scope">
+              {{ parseTime(scope.row.formDate, "{y}-{m}-{d}") }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="外协商名称"
+            align="center"
+            prop="supplierName"
+            width="320"
+          />
+          <el-table-column
+            label="结算方式"
+            align="center"
+            prop="settlementType"
+            width="120"
+          >
+            <template #default="scope">
+              <dict-tag
+                :options="settlement_type"
+                :value="scope.row.settlementType"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="送货方式"
+            align="center"
+            prop="deliveryMethod"
+            width="120"
+          >
+            <template #default="scope">
+              <dict-tag
+                :options="delivery_method"
+                :value="scope.row.deliveryMethod"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="带箱方式"
+            align="center"
+            prop="packagingMethod"
+            width="120"
+          >
+            <template #default="scope">
+              <dict-tag
+                :options="packaging_method"
+                :value="scope.row.packagingMethod"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column label="备注" align="center" prop="remark" />
+          <el-table-column
+            label="操作"
+            align="center"
+            class-name="small-padding fixed-width"
+            width="144"
+          >
+            <template #default="scope">
+              <el-button
+                v-if="scope.row.isSubmit == 0"
+                link
+                type="warning"
+                icon="Edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['business:outsource:save']"
+              >
+                编辑
+              </el-button>
+              <el-button
+                v-if="scope.row.isSubmit == 1"
+                link
+                type="primary"
+                icon="View"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['business:outsource:save']"
+              >
+                查看
+              </el-button>
+              <el-button
+                link
+                type="danger"
+                icon="Delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['business:outsource:remove']"
+              >
+                删除
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+
+    <!-- 分页 -->
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 表单 -->
+    <order-form
+      ref="orderRef"
+      :get-list="getList"
+      :delivery-method="delivery_method"
+      :settlement-type="settlement_type"
+      :packaging-method="packaging_method"
+    />
+  </div>
 </template>
 
 <script setup name="Order">
-import { listOrder, delOrder } from '@/api/business/outsourcedOrder'
-import orderForm from './form'
-const { proxy } = getCurrentInstance()
+import { listOrder, delOrder } from "@/api/business/outsourcedOrder";
+import orderForm from "./form";
+const { proxy } = getCurrentInstance();
 /** 字典数组区 */
-const { delivery_method } = proxy.useDict('delivery_method')
-const { settlement_type } = proxy.useDict('settlement_type')
-const { packaging_method } = proxy.useDict('packaging_method')
-
-const orderList = ref([])
-const loading = ref(true)
-const ids = ref([])
-const single = ref(true)
-const multiple = ref(true)
-const total = ref(0)
+const { delivery_method } = proxy.useDict("delivery_method");
+const { settlement_type } = proxy.useDict("settlement_type");
+const { packaging_method } = proxy.useDict("packaging_method");
+
+const orderList = ref([]);
+const loading = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
 /** 查询对象 */
 const queryParams = ref({
-	pageNum: 1,
-	pageSize: 10,
-	formCode: null,
-	formDate: null,
-	supplierName: null,
-	deliveryMethod: null,
-	packagingMethod: null,
-	freightPrice: null,
-	freightAmount: null
-})
+  pageNum: 1,
+  pageSize: 10,
+  formCode: null,
+  formDate: null,
+  supplierName: null,
+  deliveryMethod: null,
+  packagingMethod: null,
+  freightPrice: null,
+  freightAmount: null,
+});
 
 /***********************  方法区  ****************************/
 
 /** 查询外协单主
 带箱方式,是整单的。如果换新箱子,明细中,都需要更换箱子列表 */
 function getList() {
-	loading.value = true
-	listOrder(queryParams.value).then((response) => {
-		orderList.value = response.rows
-		total.value = response.total
-		loading.value = false
-	})
+  loading.value = true;
+  listOrder(queryParams.value).then((response) => {
+    console.log("response", response);
+    orderList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
 }
 
 /** 搜索按钮操作 */
 function handleQuery() {
-	queryParams.value.pageNum = 1
-	getList()
+  queryParams.value.pageNum = 1;
+  getList();
 }
 
 /** 重置按钮操作 */
 function resetQuery() {
-	proxy.resetForm('queryRef')
-	handleQuery()
+  proxy.resetForm("queryRef");
+  handleQuery();
 }
 
 // 多选框选中数据
 function handleSelectionChange(selection) {
-	ids.value = selection.map((item) => item.id)
-	single.value = selection.length != 1
-	multiple.value = !selection.length
+  ids.value = selection.map((item) => item.id);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
 }
 
 /** 新增按钮操作 */
 function handleAdd() {
-	proxy.$refs.orderRef.open()
+  proxy.$refs.orderRef.open();
 }
 
 /** 修改按钮操作 */
 function handleUpdate(row) {
-	const id = row.id || ids.value
-	proxy.$refs.orderRef.open(id)
+  const id = row.id || ids.value;
+  proxy.$refs.orderRef.open(id);
 }
 
 /** 删除按钮操作 */
 function handleDelete(row) {
-	const _ids = row.id || ids.value
-	proxy.$modal
-		.confirm('是否确认删除选中的数据项?')
-		.then(function () {
-			return delOrder(_ids)
-		})
-		.then(() => {
-			getList()
-			proxy.$modal.msgSuccess('删除成功!')
-		})
-		.catch(() => {})
+  const _ids = row.id || ids.value;
+  proxy.$modal
+    .confirm("是否确认删除选中的数据项?")
+    .then(function () {
+      return delOrder(_ids);
+    })
+    .then(() => {
+      getList();
+      proxy.$modal.msgSuccess("删除成功!");
+    })
+    .catch(() => {});
 }
 
 /** 导出按钮操作 */
 function handleExport() {
-	proxy.download(
-		'business/order/export',
-		{
-			...queryParams.value
-		},
-		`order_${new Date().getTime()}.xlsx`
-	)
+  proxy.download(
+    "business/order/export",
+    {
+      ...queryParams.value,
+    },
+    `order_${new Date().getTime()}.xlsx`
+  );
 }
 
-getList()
+getList();
 </script>