Bladeren bron

项目管理

zengfanwei 2 maanden geleden
bovenliggende
commit
bcea7b3984

+ 2 - 2
src/api/lc/company.js

@@ -1,10 +1,10 @@
 import request from "../../utils/request";
 //通过id获取企业详情
-export function getLcCompanyById() {
+export function getLcCompanyById(params) {
     return request({
         url: '/LcCompany/getLcCompanyById',
         method: 'get',
-
+        params
     })
 }
 

+ 3 - 3
src/api/lc/project.js

@@ -1,10 +1,10 @@
 import request from "../../utils/request";
 //通过id获取项目信息
-export function getLcProjectById() {
+export function getLcProjectById(id) {
     return request({
         url: '/LcProject/getLcProjectById',
         method: 'get',
-
+        params: { id }
     })
 }
 
@@ -36,7 +36,7 @@ export function getLcProjectTypeById() {
 }
 
 
-//新增项目
+//查询所有项目分类
 export function getAllLcProjectTypes(data) {
     return request({
         url: '/LcProjectType/getAllLcProjectTypes',

+ 1 - 1
src/components/searchArea/index.vue

@@ -85,7 +85,7 @@ import { ref, watch, reactive } from 'vue'
 import { debounce } from '@/utils/debounce'
 
 onMounted(() => {
-    console.log("searchData", props.searchData);
+    // console.log("searchData", props.searchData);
 })
 
 const props = defineProps({

+ 0 - 4
src/utils/common.js

@@ -1,7 +1,3 @@
-export function valueToLabel(cb, delay) {
-    
-}
- 
 export function getLabelByValue(value, arr, options = {}) {
   // 解构配置参数(带默认值)
   const {

+ 10 - 10
src/views/logisticsMaterials/logisticsBasicData/enterpriseInformation/index.vue

@@ -200,7 +200,7 @@ const currentCompanyType = ref('0')
 const searchData = ref([
     {
         label: '企业名称',
-        key: 'vehicleName',
+        key: 'companyName',
         type: 'input',
         value: '',
         clearable: true,
@@ -213,14 +213,14 @@ let addItemForm = ref({
 
 let centerDialogVisible = ref(false)
 
-let currentTabLabel = ref('供应商')
-
 const colSize = ref(8)
 const handleSizeChange = (val) => {
     pageSize.value = val
+    init()
 }
 const handleCurrentChange = (val) => {
     pageNumber.value = val
+    init()
 }
 
 const formRules = {
@@ -257,7 +257,7 @@ const ruleFormRef = ref(null)
 
 onMounted(() => {
     nextTick(() => {
-        queryCompanyList()
+        init()
     })
 })
 
@@ -266,7 +266,7 @@ const searchForm = ref({})
 const searchByForm = (form) => {
     console.log("search", form)
     searchForm.value = form
-    queryCompanyList()
+    init()
 }
 
 const handleDialogClose = () => {
@@ -288,7 +288,7 @@ const addOrEditItem = (row) => {
         if (valid) {
             insertLcCompany(addItemForm.value).then(res => {
                 ElMessage.success(addItemForm.value.id ? '修改成功' : '新增成功')
-                queryCompanyList()
+                init()
                 centerDialogVisible.value = false
             }).catch(err => {
                 // ElMessage.error(err.message)
@@ -309,7 +309,7 @@ const changeDelFlag = (row) => {
         let params = { id: row.id, delFlag: row.delFlag == '0' ? '1' : '0' }
         insertLcCompany(params).then(res => {
             ElMessage.success(row.delFlag == '0' ? '停用成功' : '启用成功')
-            queryCompanyList()
+            init()
         }).catch(err => {
             // ElMessage.error(err.message)
         })
@@ -347,10 +347,10 @@ const handleClick = (tab, event) => {
     currentCompanyType.value = tab.props.name
     pageNumber.value = "1"
     pageSize.value = "10"
-    queryCompanyList()
+    init()
 }
 
-const queryCompanyList = (params) => {
+const init = (params) => {
     params = {
         ...params,
         ...searchForm.value,
@@ -359,7 +359,7 @@ const queryCompanyList = (params) => {
         pageNumber: pageNumber.value
     }
     getLcCompanyList(params).then((res) => {
-        console.log("queryCompanyList", res)
+        console.log("init", res)
         total.value = res.total
         tableData.value = res.records
         console.log("tableData", tableData.value)

+ 106 - 42
src/views/logisticsMaterials/logisticsBasicData/projectInformation/index.vue

@@ -8,26 +8,33 @@
             <div style="background-color: #fff;padding: 8px">
                 <el-button type="primary" icon="Plus" @click="onAddItem" style="margin-left: 5px">新增</el-button>
             </div>
-            <el-table
-                :data="tableData"
-                border style="width: 100%" height="100%" stripe highlight-current-row class="ypClassTable normal-size">
-                <el-table-column prop="code" label="项目编码">
+            <el-table :data="tableData" border style="width: 100%" height="100%" stripe highlight-current-row
+                class="ypClassTable normal-size">
+                <el-table-column prop="projectCode" label="项目编码">
                 </el-table-column>
-                <el-table-column prop="name" label="项目名称">
+                <el-table-column prop="projectName" label="项目名称">
                 </el-table-column>
-                <el-table-column prop="name" label="规格">
+                <el-table-column prop="projectSpecifications" label="规格">
                 </el-table-column>
-                <el-table-column prop="name" label="单位">
+                <el-table-column prop="projectUnit" label="单位">
                 </el-table-column>
-                <el-table-column prop="name" label="物价码">
+                <el-table-column prop="priceCode" label="物价码">
                 </el-table-column>
-                <el-table-column prop="delFlag" label="项目类型">
+                <el-table-column prop="projectType" label="项目类型">
+                    <template v-slot="scope">
+                        <span>{{ getLabelByValue(scope.row.projectType, projectTypeOption, {
+                            labelKey:
+                            'typeName',valueKey : 'id'}) }}</span>
+                    </template>
                 </el-table-column>
                 <el-table-column prop="delFlag" label="是否停用">
+                    <template v-slot="scope">
+                        <span>{{ getLabelByValue(scope.row.delFlag, delFlagOption) }}</span>
+                    </template>
                 </el-table-column>
-                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" align="center">
                     <template #default="scope">
-                        <el-button type="primary" size="small" @click="editYpClass(scope.row)">编辑</el-button>
+                        <el-button type="primary" size="small" @click="onEditItem(scope.row)">编辑</el-button>
                         <el-button :type="scope.row.delFlag !== '0' ? 'success' : 'info'" size="small"
                             @click.prevent="changeDelFlag(scope.row)">
                             {{ scope.row.delFlag == '0' ? '停用' : '启用' }}
@@ -44,72 +51,56 @@
         </div>
     </div>
     <el-dialog v-model="showDialog" :close-on-click-modal="false" :close-on-press-escape="false"
-        :title="(currentEditCode ? '编辑' : '新增') + '项目'" width="100%" destroy-on-close fullscreen  @close="handleDialogClose">
+        :title="(currentEditId ? '编辑' : '新增') + '项目'" width="100%" destroy-on-close fullscreen
+        @close="handleDialogClose">
         <!-- <YpPrintName :ypPrintNameDetail="ypPrintNameDetail" @closeYpPrintNameEditFor="closeYpPrintName" /> -->
-        <info :currentEditCode="currentEditCode" @handleDialogClose="handleDialogClose"></info>
+        <info :currentEditId="currentEditId" @handleDialogClose="handleDialogClose" @init="init"></info>
     </el-dialog>
 </template>
 <script setup name="YpDict">
 import { ref, onMounted, nextTick } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { getLcProjectList, insertLcProject } from '@/api/lc/project.js'
+import { getLcProjectList, insertLcProject, getAllLcProjectTypes } from '@/api/lc/project.js'
 import searchArea from '@/components/searchArea/index.vue';
 import info from '@/views/logisticsMaterials/logisticsBasicData/projectInformation/info.vue';
+import { getLabelByValue } from '@/utils/common.js'
 
 const delFlagOption = [{ value: '0', label: '启用' }, { value: '1', label: '停用' }]
 
 const searchData = ref([
     {
         label: '项目编码',
-        key: 'vehicleName',
+        key: 'projectCode',
         type: 'input',
         value: '',
         clearable: true,
     },
     {
         label: '项目名称',
-        key: 'vehicleType',
-        type: 'select',
+        key: 'projectName',
+        type: 'input',
         value: '',
-        optionsData: [ //(0:轿车,1:面包车,2:越野车,3:吉普车,4:巴士,5:卡车)
-            {
-                label: '轿车',
-                value: '0',
-            },
-            {
-                label: '面包车',
-                value: '1',
-            },
-        ],
     },
     {
         label: '项目类型',
-        key: 'vehicleType',
+        key: 'projectType',
         type: 'select',
         value: '',
         optionsData: [
-            {
-                label: '轿车',
-                value: '0',
-            },
-            {
-                label: '面包车',
-                value: '1',
-            },
         ],
     },
     {
         label: '是否停用',
-        key: 'vehicleType',
+        key: 'delFlag',
         type: 'select',
         value: '',
         optionsData: [
             {
-                label: '',
+                label: '启用',
                 value: '0',
             },
             {
-                label: '',
+                label: '停用',
                 value: '1',
             },
         ],
@@ -118,27 +109,73 @@ const searchData = ref([
 const pageSize = ref(10)
 const pageNumber = ref(1)
 const total = ref(0)
-const currentEditCode = ref('')
+const currentEditId = ref('')
 
 const tableData = ref([])
+let projectTypeOption = []
 const handleSizeChange = (val) => {
     pageSize.value = val
+    init()
 }
 const handleCurrentChange = (val) => {
     pageNumber.value = val
+    init()
 }
 
 let showDialog = ref(false)
 
+const init = (params) => {
+    params = {
+        ...params,
+        ...searchForm.value,
+        pageSize: pageSize.value,
+        pageNumber: pageNumber.value
+    }
+    getLcProjectList(params).then((res) => {
+        console.log("getLcProjectList", res)
+        total.value = res.total
+        tableData.value = res.records
+        console.log("tableData", tableData.value)
+    }).catch((err) => {
+        ElMessage.error(err)
+    })
+}
+
+const initOptions = () => {
+    getProjectTypeOption()
+}
+
+const getProjectTypeOption = () => {
+    getAllLcProjectTypes().then((res) => {
+        console.log("getAllLcProjectTypes", res)
+        projectTypeOption = res
+        console.log("projectTypeOption", projectTypeOption)
+        searchData.value[2].optionsData = projectTypeOption.map(item => {
+            return {
+                label: item.typeName,
+                value: item.id
+            }
+        })
+        console.log("searchData.value[2]", searchData.value[3].optionsData)
+    }).catch((err) => {
+        console.log("getAllLcProjectTypes", err)
+        ElMessage.error(err)
+    })
+}
+
 onMounted(() => {
     nextTick(() => {
-       
+        init()
+        initOptions()
     })
 })
 
+const searchForm = ref({})
 //搜索表单方法
 const searchByForm = (form) => {
     console.log("search", form)
+    searchForm.value = form
+    init()
 }
 
 // 新增行
@@ -146,11 +183,38 @@ const onAddItem = () => {
     showDialog.value = true
 }
 
+const onEditItem = (row) => {
+    currentEditId.value = row.id
+    showDialog.value = true
+}
+
 const handleDialogClose = () => {
-    currentEditCode.value = ""
+    currentEditId.value = ""
     showDialog.value = false
 }
 
+const changeDelFlag = (row) => {
+    let title = `是否${row.delFlag == '0' ? '停用' : '启用'}`
+    ElMessageBox.confirm(title, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        let params = { id: row.id, delFlag: row.delFlag == '0' ? '1' : '0' }
+        insertLcProject(params).then(res => {
+            ElMessage.success(row.delFlag == '0' ? '停用成功' : '启用成功')
+            init()
+        }).catch(err => {
+            // ElMessage.error(err.message)
+        })
+    }).catch((action) => {
+        if (action === 'cancel') {
+        }
+    })
+}
+
 </script>
 <style lang="scss" deep>
 .el-dialog__body {

+ 75 - 35
src/views/logisticsMaterials/logisticsBasicData/projectInformation/info.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="container">
-        <el-form ref="formRef" :model="form" class="form" label-width="127px" size="default">
+        <el-form ref="formRef" :model="form" class="form" label-width="127px" size="default" :rules="formRules">
             <el-row :gutter="20">
                 <el-col :span="8">
                     <div>第一部分</div>
@@ -15,8 +15,8 @@
                 <el-col :span="8">
                     <el-form-item label="项目分类" prop="projectType">
                         <el-select v-model="form.projectType" placeholder="请选择项目分类">
-                            <el-option v-for="item in projectTypeOption" :label="typeName"
-                                :value="item.typeCode"></el-option>
+                            <el-option v-for="item in projectTypeOption" :label="item.typeName"
+                                :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                 </el-col>
@@ -59,8 +59,8 @@
                 <el-col :span="8">
                     <el-form-item label="生产厂家" prop="lcCompanyId">
                         <el-select v-model="form.lcCompanyId" placeholder="请选择生产厂家">
-                            <el-option v-for="item in lcCompanyOption" :label="item.label"
-                                :value="item.value"></el-option>
+                            <el-option v-for="item in lcCompanyOption" :label="item.companyName"
+                                :value="item.id"></el-option>
                         </el-select>
                     </el-form-item>
                 </el-col>
@@ -77,7 +77,7 @@
             <el-row :gutter="20">
                 <el-col :span="8">
                     <el-form-item label="项目规格" prop="projectSpecifications">
-                        <el-input v-model="form.projectSpecifications" placeholder="请输入项目规格" type="number">
+                        <el-input v-model="form.projectSpecifications" placeholder="请输入项目规格">
                         </el-input>
                     </el-form-item>
                 </el-col>
@@ -170,11 +170,11 @@
                 </template>
             </el-table-column>
             <el-table-column type="index" prop="date" label="序号" width="80" />
-            <el-table-column prop="name" label="项目别名" />
-            <el-table-column prop="state" label="别名拼音码" />
-            <el-table-column prop="city" label="别名五笔码" />
+            <el-table-column prop="aliasName" label="项目别名" />
+            <el-table-column prop="pyCode" label="别名拼音码" />
+            <el-table-column prop="wbCode" label="别名五笔码" />
         </el-table>
-        <div class="confirm-area flex-center-row" style="margin-top: 20px;">
+        <div class="confirm-area flex-center-row" style="margin: 20px ;">
             <el-button type="primary" @click="confirm" size="default">确定</el-button>
             <el-button @click="cancel" size="default">取消</el-button>
         </div>
@@ -185,14 +185,8 @@
 
     <el-dialog v-model="showDialog" :close-on-click-modal="false" :close-on-press-escape="false" title="新增别名"
         width="30%" top="15%" destroy-on-close @close="handleDialogClose">
-        <!-- <el-table :data="itemTableData" style="width: 100%" height="450">
-            <el-table-column prop="date" label="项目编码" />
-            <el-table-column prop="name" label="项目名称" />
-            <el-table-column prop="address" label="规格" />
-            <el-table-column prop="address" label="单位" />
-        </el-table> -->
         <div class="flex-center-column ">
-            <el-input v-model="aliasForm.name" placeholder="请输入内容" style="width: 95%;margin-bottom: 20px;"
+            <el-input v-model="aliasForm.aliasName" placeholder="请输入内容" style="width: 95%;margin-bottom: 20px;"
                 size="default" />
             <el-button type="primary" @click="addOrEditProjectAlias" size="default">确定</el-button>
         </div>
@@ -208,26 +202,54 @@ import { insertLcProject, getLcProjectById, getAllLcProjectTypes } from '@/api/l
 
 const props = defineProps({
     //子组件接收父组件传递过来的值
-    currentEditCode: String,
+    currentEditId: String,
 })
 //使用父组件传递过来的值
-const { currentEditCode } = toRefs(props)
+const { currentEditId } = toRefs(props)
 //父组件的方法
-const emit = defineEmits(["handleDialogClose"])
+const emit = defineEmits(["handleDialogClose", "init"])
 onMounted(() => {
     nextTick(() => {
         getCompanyList()
         getProjectTypes()
+        if (currentEditId.value) {
+            init()
+        }
     })
 })
 
-let form = ref({
-    code: ""
+const form = ref({
+    delFlag: "0",
+    lcProjectAliasList: [
+
+    ]
 })
 
-let showDialog = ref(false)
+const formRef = ref(null)
+const formRules = {
+    projectType: [
+        { required: true, message: "请选择项目分类", trigger: "change" },
+    ],
+    projectName: [
+        { required: true, message: "请输入项目名称", trigger: "blur" },
+    ],
+    // pyCode: [
+    //     { required: true, message: "请输入拼音码", trigger: "blur" },
+    // ],
+    // wbCode: [
+    //     { required: true, message: "请输入五笔码", trigger: "blur" },
+    // ],
+    retailPrice: [
+        { required: true, message: "请输入零售价", trigger: "blur" },
+    ],
+    projectUnit: [
+        { required: true, message: "请选择单位", trigger: "change" },
+    ],
+}
+
+const showDialog = ref(false)
 
-let itemTableData = ref([
+const itemTableData = ref([
 ])
 
 let tableData = ref([])
@@ -289,14 +311,32 @@ const delFlagOption = ref([
     { "label": "停用", "value": "1" }
 ])
 
+const init = () => {
+    getLcProjectById(currentEditId.value).then(res => {
+        form.value = res.data
+        tableData.value = res.data.lcProjectAliasList
+    }).catch(err => {
 
-const handleSearch = () => {
-    console.log(form.value)
-    showDialog.value = true
+    })
 }
 
 const confirm = () => {
-
+    formRef.value.validate(valid => {
+        if (valid) {
+            let params = { ...form.value }
+            params.lcProjectAliasList = tableData.value
+            if(currentEditId.value) params.id = currentEditId.value
+            console.log("insertLcProject", params)
+            insertLcProject(params).then(res => {
+                ElMessage.success(currentEditId.value ? '修改成功' : '新增成功')
+                centerDialogVisible.value = false
+                emit("handleDialogClose")
+                emit("init")
+            }).catch(err => {
+                // ElMessage.error(err.message)
+            })
+        }
+    })
 }
 
 const cancel = () => {
@@ -310,7 +350,7 @@ const getCompanyList = () => {
         companyType: "1"
     }
     getLcCompanyList(params).then(res => {
-        lcCompanyOption.value = res.records
+        lcCompanyOption.value = res
     }).catch(err => {
 
     })
@@ -325,12 +365,12 @@ const getProjectTypes = () => {
 }
 
 const aliasForm = ref({
-    name: ""
+    aliasName: ""
 })
 
 const aliasEditIndex = ref(-1)
 const toEditAlias = (row, index) => {
-    aliasForm.value.name = row.name
+    aliasForm.value.aliasName = row.aliasName
     aliasEditIndex.value = index
     showDialog.value = true
 }
@@ -348,16 +388,16 @@ const deleteAlias = (index) => {
     })
 }
 const addOrEditProjectAlias = () => {
-    if (!aliasForm.value.name) {
+    if (!aliasForm.value.aliasName) {
         return ElMessage.warning("请输入别名")
     }
     if (aliasEditIndex.value >= 0) {
         console.log("target", tableData.value)
-        tableData.value[aliasEditIndex.value].name = aliasForm.value.name
+        tableData.value[aliasEditIndex.value].aliasName = aliasForm.value.aliasName
         showDialog.value = false
     } else {
         tableData.value.push({
-            name: aliasForm.value.name
+            aliasName: aliasForm.value.aliasName
         })
         showDialog.value = false
     }
@@ -365,7 +405,7 @@ const addOrEditProjectAlias = () => {
 
 const handleDialogClose = () => {
     aliasForm.value = {
-        name: ""
+        aliasName: ""
     }
     aliasEditIndex.value = -1
 }