YangJian0701 7 months ago
parent
commit
2501ca0ac1

BIN
ERP.rar


+ 11 - 0
src/api/storehouse/index.ts

@@ -14,6 +14,17 @@ export const VerifyItem_Edit = (params: any) => $http.post('/storage/VerifyItem/
 export const VerifyItem_Del = (params: any) => $http.post('/storage/VerifyItem/Del', params)
 
 
+// 双击排序
+export const stockInSort = (params: any) => $http.post('/storage/Stock/Edit_Sort', params)
+
+// 双击排序 
+export const stockInEditSort = (params: any) => $http.post('/storage/Product/Edit_Sort', params)
+
+// 入库管理 入库详情 导出excel
+export const stockInexcel = (params: any) => $http.post('/storage/StockIn/Excel', params)
+// 出库管理 出库详情 导出excel
+export const stockoutexcel = (params: any) => $http.post('/storage/StockOut/Excel', params)
+
 /**
  * 仓库
  */

+ 0 - 1
src/components/TableBase/index.vue

@@ -44,7 +44,6 @@ const { tableData, pageable, loading, getTableList, searchTable, handleSizeChang
 )
 // 接收 columns 并设置为响应式
 const tableColumns = ref<ColumnProps[]>(props.columns)
-
 onMounted(() => {
   getTableList()
 })

+ 1 - 0
src/views/contractReview/contractReviewFinance.vue

@@ -99,6 +99,7 @@ const columns = [
     { prop: 'T_submit_name', label: '项目负责人' },
     { prop: 'T_predict_sign_time', label: '预计签约时间' },
     { prop: 'T_money', label: '总金额' },
+    { prop: 'T_discount_money', label: '最终优惠金额' },
     { prop: 'T_have_brokerage_fee', label: '是否有居间费', name: 'T_have_brokerage_fee' },
     { prop: 'T_brokerage_fee_money', label: '居间费金额' },
     { prop: 'operation', label: '操作', fixed: 'right',width:'300px' }

+ 1 - 0
src/views/contractReview/contractReviewList.vue

@@ -93,6 +93,7 @@ const columns = [
     { prop: 'T_submit_name', label: '项目负责人' },
     { prop: 'T_predict_sign_time', label: '预计签约时间' },
     { prop: 'T_money', label: '总金额' },
+    { prop: 'T_discount_money', label: '最终优惠金额' },
     { prop: 'T_have_brokerage_fee', label: '是否有居间费', name: 'T_have_brokerage_fee' },
     { prop: 'T_brokerage_fee_money', label: '居间费金额' },
     { prop: 'operation', label: '操作', fixed: 'right',width:'300px' }

+ 1 - 0
src/views/contractReview/contractReviewManager.vue

@@ -94,6 +94,7 @@ const columns = [
     { prop: 'T_submit_name', label: '项目负责人' },
     { prop: 'T_predict_sign_time', label: '预计签约时间' },
     { prop: 'T_money', label: '总金额' },
+    { prop: 'T_discount_money', label: '最终优惠金额' },
     { prop: 'T_have_brokerage_fee', label: '是否有居间费', name: 'T_have_brokerage_fee' },
     { prop: 'T_brokerage_fee_money', label: '居间费金额' },
     { prop: 'operation', label: '操作', fixed: 'right',width:'200px'}

+ 7 - 0
src/views/contractReview/modules/contractReviewListAdd.vue

@@ -76,6 +76,11 @@
                 <el-form-item label="总金额">
                     {{ moneyFun() }}
                 </el-form-item>
+                <el-form-item label="最终优惠金额">
+                    <div style="display: flex;align-items: center;">
+                        <el-input v-model="data.initParam.T_discount_money" /><span style="padding-left: 10px">元</span>
+                    </div>
+                </el-form-item>
                 <el-form-item label="是否有居间费" prop="T_have_brokerage_fee">
                     <el-radio-group v-model="data.initParam.T_have_brokerage_fee">
                         <el-radio :label="true">是</el-radio>
@@ -174,6 +179,7 @@ const props:any = defineProps({
 watch(()=>outerVisible.value,(newData)=>{
     if(newData && data.drawerTiti!='新增'){//打开
         let arr = {...props.fromData}
+        console.log('--',arr)
         for (let key in arr) {  
             if (data.initParam.hasOwnProperty(key)) {  
                 data.initParam[key] = arr[key];
@@ -190,6 +196,7 @@ const data:any = reactive({
         T_predict_sign_time: '',
         T_money:0,
         T_have_brokerage_fee: false,
+        T_discount_money:0,
         T_brokerage_fee_money:0,
         ServiceItems:[]
     },

+ 3 - 0
src/views/contractReview/modules/particulars.vue

@@ -73,6 +73,9 @@
                     <el-form-item label="总金额">
                         {{ moneyFun() }}
                     </el-form-item>
+                    <el-form-item label="最终优惠金额">
+                        {{ fromData.T_discount_money }}元
+                    </el-form-item>
                     <el-form-item label="是否有居间费">
                         <el-radio-group v-model="fromData.T_have_brokerage_fee" :disabled="true">
                             <el-radio :label="true">是</el-radio>

+ 29 - 6
src/views/storehouse/InventoryStatistics.vue

@@ -6,7 +6,8 @@ import {
     Storehouse_Product_Model_List,
     Storehouse_Product_Name_List,
     Storehouse_Stock_Detail_List,
-    Storehouse_Stock_Detail_Excel
+    Storehouse_Stock_Detail_Excel,
+    stockInSort
 } from '@/api/storehouse/index'
 import { ref, reactive, onMounted } from 'vue'
 import { List } from '@element-plus/icons-vue'
@@ -17,7 +18,7 @@ import type { ColumnProps } from '@/components/TableBase/interface/index'
 import { dayJs } from '@/utils/common'
 import ImageCom from '@/components/Image/index.vue'
 import { useTablePublic } from '@/hooks/useTablePublic'
-
+import { ElMessage, ElMessageBox } from 'element-plus'
 import InventoryStatisticsshowModel from "./modules/InventoryStatisticsshowModel.vue";
 
 
@@ -49,6 +50,7 @@ const detailInitParam = reactive({
 const columns: ColumnProps[] = [
     { type: 'index', label: '序号', width: 80 },
     { prop: 'T_depot_name', label: '仓库名称' },
+    { prop: 'T_sort', label: '排序(双击排序)', name: 'T_sort' },
     { prop: 'T_product_img', label: '产品图片', name: 'T_product_img' },
     { prop: 'T_product_name', label: '产品名称' },
     { prop: 'T_product_class_name', label: '产品分类' },
@@ -100,7 +102,7 @@ const confirmExpor = async (project_id?: string) => {
         T_end_date: T_date_detail.value[1],
         T_product_id: ''
     }
-    console.log('导出',T_date_detail.value,params)
+    console.log('导出', T_date_detail.value, params)
     if (typeof project_id === 'number') {
         params['T_product_id'] = project_id
     }
@@ -186,7 +188,7 @@ onMounted(() => {
     getProductClassList()
     T_date.value = [dayJs().startOf('year').format('YYYY-MM-DD'), dayJs().format('YYYY-MM-DD')]
     T_date_detail.value = [...T_date.value]
-    console.log('初始化时间',T_date)
+    console.log('初始化时间', T_date)
 })
 
 const getSalaryParams = (row: any) => {
@@ -197,6 +199,22 @@ const getSalaryParams = (row: any) => {
     }, 100)
 }
 
+const handleHeaderClick = async (e:any) => {
+    ElMessageBox.prompt('请输入排序号', '', {
+        confirmButtonText: 'OK',
+        cancelButtonText: 'Cancel',
+        inputValue:`${e.T_sort}`
+    }).then(async({ value }) => {
+       const result:any = await stockInSort({T_id:e.Id,T_sort:value})
+       console.log('提交',value,result)
+       if(result.Code==200){
+            ElMessage.success('编辑成功')
+            TableRef.value?.getTableList()
+       }
+
+    }).catch(() => {})
+
+}
 
 
 </script>
@@ -271,6 +289,11 @@ const getSalaryParams = (row: any) => {
                             </el-form>
                         </div>
                     </template>
+                    <template #T_sort="{ row }">
+                        <div @dblclick="handleHeaderClick(row)" style="cursor: pointer;">
+                            {{ row.T_sort }}
+                        </div>
+                    </template>
                     <template #T_product_img="{ row }">
                         <ImageCom :src="row.T_product_img" />
                     </template>
@@ -292,7 +315,7 @@ const getSalaryParams = (row: any) => {
                 <template #table-header>
                     <el-row class="head-search">
                         <el-col :span="12"><el-form-item label="日期范围">
-                            
+
                                 <el-date-picker v-model="T_date_detail" type="daterange" range-separator="~"
                                     start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD"
                                     value-format="YYYY-MM-DD" @change="dateDetailChange" /></el-form-item></el-col>
@@ -302,7 +325,7 @@ const getSalaryParams = (row: any) => {
                     </el-row>
                 </template>
                 <template #right="{ row }">
-                    <InventoryStatisticsshowModel :rows="row"/>
+                    <InventoryStatisticsshowModel :rows="row" />
                 </template>
             </TableBase>
         </Drawer>

+ 23 - 3
src/views/storehouse/ProductionList.vue

@@ -5,7 +5,8 @@ import {
   Storehouse_Product_Add,
   Storehouse_Product_Edit,
   Storehouse_Product_Del,
-  Storehouse_Product_Spec_List
+  Storehouse_Product_Spec_List,
+  stockInEditSort
 } from '@/api/storehouse/index'
 import { ref, reactive, nextTick, onMounted } from 'vue'
 import Upload from '@/components/Upload/index.vue'
@@ -29,9 +30,10 @@ const { resetForm, globalStore, searchOnTableList, updateOnTableList } = useTabl
 const columns: ColumnProps[] = [
   { type: 'index', label: '序号', width: 80 },
   { prop: 'T_img', label: '产品图片', name: 'T_img' },
-  { prop: 'T_name', label: '产品名称' },
   { prop: 'T_class_name', label: '产品分类' },
+  { prop: 'T_name', label: '产品名称' },
   { prop: 'T_model', label: '产品型号', ellipsis: true },
+  { prop: 'T_sort', label: '序号(双击)', ellipsis: true, name: 'T_sort' },
   { prop: 'T_spec', label: '产品规格' },
   { prop: 'T_relation_sn', label: '关联SN', name: 'T_relation_sn' },
   { prop: 'T_remark', label: '备注', name: 'T_remark' },
@@ -140,7 +142,19 @@ const getSpecList = async () => {
   const res: any = await Storehouse_Product_Spec_List({ User_tokey: globalStore.GET_User_tokey })
   specList.value = res.Data
 }
-
+const onclickSort = async (row:any)=>{
+    ElMessageBox.prompt('请输入排序号', '', {
+        confirmButtonText: 'OK',
+        cancelButtonText: 'Cancel',
+        inputValue:`${row.T_sort}`
+    }).then(async({ value }) => {
+       const result:any = await stockInEditSort({T_id:row.Id,T_sort:value})
+       if(result.Code==200){
+            ElMessage.success('编辑成功')
+            TableRef.value?.getTableList()
+       }
+    }).catch(() => {})
+}
 onMounted(() => {
   getProductClassList()
 })
@@ -175,9 +189,15 @@ onMounted(() => {
           </el-row>
         </div>
       </template>
+
       <template #T_img="{ row }">
         <ImageCom :src="row.T_img" />
       </template>
+      <template #T_sort="{ row }">
+        <div @dblclick="onclickSort(row)" style="cursor: pointer;">
+            {{ row.T_sort }}
+          </div>
+      </template>
       <template #T_remark="{ row }">
         <el-tooltip effect="customized" placement="left">
           <template #content>

+ 15 - 11
src/views/storehouse/inventory/Device.vue

@@ -36,7 +36,9 @@ const options = reactive([
 const initParam = reactive({
   User_tokey: globalStore.GET_User_tokey,
   T_name: '',
-  T_state: ''
+  T_state: '',
+  T_product_name:'',
+  T_product_model:'',
 })
 const searchHandle = () => {
   TableRef.value?.searchTable()
@@ -49,21 +51,23 @@ const searchHandle = () => {
       <template #table-header>
         <div class="input-suffix">
           <el-row :gutter="20" style="margin-bottom: 0">
-            <el-col :xl="6" :lg="8" :md="10">
+            <el-col :xl="6" :lg="6" :md="6">
               <span class="inline-flex items-center">关键字:</span>
-              <el-input
-                v-model="initParam.T_name"
-                type="text"
-                class="w-50 m-2"
-                placeholder="按合同编号、出库单号、SN搜索"
-                @change="searchHandle"
-              />
+              <el-input v-model="initParam.T_name" class="w-50 m-2" type="text" placeholder="按合同编号、出库单号、SN搜索" @change="searchHandle"/>
             </el-col>
-            <el-col :xl="10" :md="12">
+            <el-col :xl="6" :lg="6" :md="6">
               <span class="inline-flex items-center">状态:</span>
-              <el-select v-model="initParam.T_state" class="w-50" clearable placeholder="请选择状态~">
+              <el-select v-model="initParam.T_state" class="w-50 m-2" clearable placeholder="请选择状态~">
                 <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
+            </el-col>
+            <el-col :xl="6" :lg="6" :md="6">
+              <span class="inline-flex items-center">产品名称:</span>
+              <el-input class="w-50 m-2" v-model="initParam.T_product_name" type="text" placeholder="按产品名称搜索" @change="searchHandle" />
+            </el-col>
+            <el-col :xl="6" :lg="6" :md="6">
+              <span class="inline-flex items-center">产品型号:</span>
+              <el-input class="w-50 m-2" v-model="initParam.T_product_model" type="text" placeholder="按合产品型号搜索" @change="searchHandle" />
               <el-button type="primary" @click="searchHandle">搜索</el-button>
             </el-col>
           </el-row>

+ 15 - 2
src/views/storehouse/inventory/InStorageDetail.vue

@@ -4,7 +4,7 @@ import { GlobalStore } from '@/stores/index'
 import { useRoute, useRouter } from 'vue-router'
 import Drawer from '@/components/Drawer/index.vue'
 import { InStorageInfoType } from '@/hooks/useDepot'
-import { Storehouse_StockIn_Get } from '@/api/storehouse/index'
+import { Storehouse_StockIn_Get,stockInexcel } from '@/api/storehouse/index'
 import ImageCom from '@/components/Image/index.vue'
 
 const tableData = ref<any[]>([])
@@ -54,6 +54,16 @@ const previewSn = (devicelist: string[]) => {
     }
   })
 }
+
+const stockInexcelFun = async (data:any)=>{
+    console.log(data,info.value);
+    const result:any = await stockInexcel({T_number:info.value!.T_number})
+    if (result.Code === 200) {
+        window.open(result.Data)
+    }
+}
+
+
 onMounted(() => {
   getStorehouseContractGet()
 })
@@ -61,7 +71,10 @@ onMounted(() => {
 <template>
   <div class="contract-detail">
     <div class="info">
-      <h1>入库详情</h1>
+      <div style="display: flex;justify-content: space-between">
+            <h1>入库详情</h1>
+            <el-button type="primary" icon="Download" @click="stockInexcelFun">导出excel</el-button>
+      </div>
       <el-divider />
       <div class="content">
         <el-row>

+ 15 - 2
src/views/storehouse/outStock/OutStockDetail.vue

@@ -3,7 +3,7 @@ import { ref, onMounted } from 'vue'
 import { GlobalStore } from '@/stores/index'
 import { useRoute, useRouter } from 'vue-router'
 import Drawer from '@/components/Drawer/index.vue'
-import { Storehouse_StockOut_Get } from '@/api/storehouse/index'
+import { Storehouse_StockOut_Get,stockoutexcel } from '@/api/storehouse/index'
 import { InfoType } from '@/hooks/useDepot'
 import ImageCom from '@/components/Image/index.vue'
 
@@ -31,6 +31,15 @@ const snColumns = [
   { label: 'SN', prop: 'sn', align: 'center ' }
 ]
 
+const stockInexcelFun = async (data:any)=>{
+    console.log(data,info.value);
+    const result:any = await stockoutexcel({T_number:info.value!.T_number})
+    if (result.Code === 200) {
+        window.open(result.Data)
+    }
+}
+
+
 const getStorehouseContractGet = async () => {
   const res: any = await Storehouse_StockOut_Get({
     User_tokey: globalStore.GET_User_tokey,
@@ -76,7 +85,11 @@ onMounted(() => {
 <template>
   <div class="contract-detail">
     <div class="info">
-      <h1>出库详情</h1>
+        <div style="display: flex;justify-content: space-between">
+            <h1>出库详情</h1>
+            <el-button type="primary" icon="Download" @click="stockInexcelFun">导出excel</el-button>
+      </div>
+      
       <el-divider />
       <div class="content">
         <el-row>