2 İşlemeler 07004d8ed1 ... b42658aa52

Yazar SHA1 Mesaj Tarih
  liuhj b42658aa52 Merge branch 'master' of http://132.232.92.186:3000/XinXiBu/oa-system 1 hafta önce
  liuhj 158f81f0d7 0529wuzhiyusuan 1 hafta önce
2 değiştirilmiş dosya ile 383 ekleme ve 0 silme
  1. 377 0
      src/components/Resource/WorldGamescost.vue
  2. 6 0
      src/router/index.js

+ 377 - 0
src/components/Resource/WorldGamescost.vue

@@ -0,0 +1,377 @@
+<template>
+    <div class="worldgamescost-all">
+        <el-dialog width="960px" :close-on-click-modal="false" title="新增编辑" :visible.sync="NeweditsVisible">
+            <el-form :model="enterpriseprofitlabel" :rules="enterpriseprofitlabelrules" ref="enterpriseprofitlabel">
+                <div class="Newedits-form">
+                    <el-form-item prop="t0" label="直属父类 :" :label-width="formLabelWidth">
+                        <el-input v-model="enterpriseprofitlabel.t0" autocomplete="off"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="projectWork" label="项目工作 :" :label-width="formLabelWidth">
+                        <el-input v-model="enterpriseprofitlabel.projectWork" autocomplete="off"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="calculationContent" label="测算内容 :" :label-width="formLabelWidth">
+                        <el-input v-model="enterpriseprofitlabel.calculationContent" autocomplete="off"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="quantity" label="数量 :" :label-width="formLabelWidth">
+                        <el-input-number style="width: 100%" @blur="calculateTotal" :precision="2" :controls="false"
+                            v-model="enterpriseprofitlabel.quantity"></el-input-number>
+                    </el-form-item>
+                    <el-form-item prop="unit" label="单位 :" :label-width="formLabelWidth">
+                        <el-input v-model="enterpriseprofitlabel.unit" autocomplete="off"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="unitPrice" label="单价 :" :label-width="formLabelWidth">
+                        <el-input-number style="width: 100%" @blur="calculateTotal" :precision="2" :controls="false"
+                            v-model="enterpriseprofitlabel.unitPrice" controls-position="right" class="with-unit-right">
+                        </el-input-number>
+                    </el-form-item>
+                    <el-form-item label="周期-时间 :" :label-width="formLabelWidth">
+                        <el-input-number style="width: 100%" @blur="calculateTotal" :precision="0" :controls="false"
+                            v-model="enterpriseprofitlabel.cycleTime"></el-input-number>
+                    </el-form-item>
+                    <el-form-item label="周期-单位 :" :label-width="formLabelWidth">
+                        <el-input v-model="enterpriseprofitlabel.cycleUnit" autocomplete="off"></el-input>
+                    </el-form-item>
+                    <el-form-item prop="itemTotal" label="项总金额 :" :label-width="formLabelWidth">
+                        <el-input-number style="width: 100%" :precision="2" :controls="false"
+                            v-model="enterpriseprofitlabel.itemTotal" controls-position="right" class="with-unit-right"></el-input-number>
+                    </el-form-item>
+                    <el-form-item label="说明 :" :label-width="formLabelWidth">
+                        <el-input v-model="enterpriseprofitlabel.specification" autocomplete="off"></el-input>
+                    </el-form-item>
+                </div>
+                <el-form-item label="备注 :" :label-width="formLabelWidth">
+                    <el-input type="textarea" placeholder="请输入内容" v-model="enterpriseprofitlabel.remark" show-word-limit>
+                    </el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="NeweditsVisible = false">取 消</el-button>
+                <el-button type="primary" @click="submitForm('enterpriseprofitlabel')">确 定</el-button>
+            </div>
+        </el-dialog>
+        <div class="worldgamescost-hade">
+            <div>
+                <el-input style="width:300px" placeholder="请输入内容" v-model="input" clearable></el-input>
+                <el-button @click="search" type="primary">查 询</el-button>
+            </div>
+            <el-button @click="openNewEdit('新增')" type="primary">新 增</el-button>
+        </div>
+        <div class="worldgamescost-table">
+            <el-table :data="tableData" border style="width: 100%">
+                <el-table-column prop="rowIndex" label="序号" width="50">
+                </el-table-column>
+                <el-table-column prop="t0" label="直属父类" width="180">
+                </el-table-column>
+                <el-table-column prop="projectWork" label="项目工作" width="180">
+                </el-table-column>
+                <el-table-column prop="calculationContent" label="测算内容" width="180">
+                </el-table-column>
+                <el-table-column prop="quantity" label="数量" width="100">
+                    <template slot-scope="scope">
+                        <span>{{ townum(scope.row.quantity) }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="unit" label="单位" width="100">
+                </el-table-column>
+                <el-table-column prop="unitPrice" label="单价" width="100">
+                    <template slot-scope="scope">
+                        <span>{{ townum(scope.row.unitPrice) }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="cycleTime" label="周期-时间" width="120">
+                </el-table-column>
+                <el-table-column prop="cycleUnit" label="周期-单位" width="120">
+                </el-table-column>
+                <el-table-column prop="itemTotal" label="项总金额" width="120">
+                    <template slot-scope="scope">
+                        <span>{{ townum(scope.row.itemTotal) }}</span>
+                    </template>
+                </el-table-column>
+                <!-- <el-table-column prop="specification" label="说明" width="150">
+                </el-table-column> -->
+                <el-table-column prop="remark" label="备注">
+                    <template slot-scope="scope">
+                        <el-popover placement="top" width="300" trigger="hover">
+                            {{ scope.row.remark }}
+                            <span
+                                style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden;cursor: pointer;color: #48a2ff;"
+                                slot="reference">{{ scope.row.remark }}</span>
+                        </el-popover>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" width="160">
+                    <template slot-scope="scope">
+                        <el-button size="mini" type="primary" @click="openNewEdit('编辑',scope.row.id)">编辑</el-button>
+                        <el-button size="mini" type="danger" @click="deleteRow(scope.row.id)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <div class="block">
+                <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                    :current-page="pageIndex" :page-sizes="[10, 15, 20, 50]" :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper" :total="total">
+                </el-pagination>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+import { Decimal } from 'decimal.js'
+export default {
+    data() {
+        return {
+            input: '',
+            tableData: [],
+            userId: '',
+            token: '',
+            pageIndex: 1,
+            pageSize: 10,
+            total: 0,
+            NeweditsVisible:false,
+            formLabelWidth: '90px',
+            id : 0,
+            enterpriseprofitlabel: {
+                t0: '',//直属父类
+                projectWork: '',//项目工作
+                calculationContent: '',//测算内容
+                quantity: '',//数量
+                unit: '',//单位
+                unitPrice: '',//单价
+                cycleTime: 1,//周期-时间
+                cycleUnit: '',//周期-单位
+                itemTotal: '',//项总金额
+                specification: '',//说明
+                remark: ''//备注
+            },
+            enterpriseprofitlabelrules: {
+                t0: [{ required: true, message: '请输入直属父类', trigger: 'blur' }],
+                projectWork: [{ required: true, message: '请输入项目工作', trigger: 'blur' }],
+                calculationContent: [{ required: true, message: '请输入测算内容', trigger: 'blur' }],
+                quantity: [{ required: true, message: '请输入数量', trigger: 'blur' }],
+                unit: [{ required: true, message: '请输入单位', trigger: 'blur' }],
+                unitPrice: [{ required: true, message: '请输入单价', trigger: 'blur' }],
+                itemTotal: [{ required: true, message: '请输入项总金额', trigger: 'blur' }],
+            },
+        }
+    },
+    methods: {
+        //保留两位小数
+        townum(val) {
+            val = Number(val);
+            return val.toFixed(2);
+        },
+        //查询
+        search() {
+            this.pageIndex = 1;
+            this.GamesBudgetMasterList();
+        },
+        //每页条数改变时触发 选择一页显示多少行
+        handleSizeChange(val) {
+            this.pageIndex = 1;
+            this.pageSize = val;
+            this.GamesBudgetMasterList()
+        },
+        //当前页改变时触发 跳转其他页
+        handleCurrentChange(val) {
+            this.pageIndex = val;
+            this.GamesBudgetMasterList()
+        },
+        //计算项目总金额
+        calculateTotal() {
+            this.enterpriseprofitlabel.itemTotal=0;
+            this.enterpriseprofitlabel.itemTotal = (new Decimal(this.enterpriseprofitlabel.quantity) * new Decimal(this.enterpriseprofitlabel.cycleTime)* new Decimal(this.enterpriseprofitlabel.unitPrice)).toFixed(2);
+        },
+        //数据初始化
+        initData() {
+            this.enterpriseprofitlabel = {
+                t0: '',
+                projectWork: '',
+                calculationContent: '',
+                quantity: '',
+                unit: '',
+                unitPrice: '',
+                cycleTime: 1,
+                cycleUnit: '',
+                itemTotal: '',
+                specification: '',
+                remark: ''
+            };
+        },
+        //打开新增编辑弹窗
+        openNewEdit(val,id) {
+            this.NeweditsVisible = true;
+            this.initData();
+            if(val=='新增'){
+                this.id=0;
+            }else{
+                this.id=id;
+                this.GamesBudgetMasterInfo(this.id);
+            }
+        },
+        //获取详情
+        GamesBudgetMasterInfo(id) {
+            var url = "/api/Resource/GamesBudgetMasterInfo/"+id
+            var that = this
+            this.$axios({
+                method: 'get',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.enterpriseprofitlabel = res.data.data;
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            }).catch(function (error) {
+                that.$message.error("获取数据源失败!");
+            });
+        },
+        //获取表格
+        GamesBudgetMasterList() {
+            this.tableData = [];
+            var url = "/api/Resource/GamesBudgetMasterList"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: {
+                    portType: 1,
+                    pageIndex: that.pageIndex,
+                    pageSize: that.pageSize,
+                    search: that.input,
+                }
+            }).then(function (res) {
+                console.log(res)
+                if (res.data.code == 200) {
+                    that.total = res.data.count;
+                    that.tableData = res.data.data;
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            }).catch(function (error) {
+                that.$message.error("获取数据源失败!");
+            });
+        },
+        //删除行
+        deleteRow(id) {
+            this.$confirm('此操作将永久删除该行数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                var url = "/api/Resource/GamesBudgetMasterDel"
+                var that = this
+                this.$axios({
+                    method: 'post',
+                    url: url,
+                    headers: {
+                        Authorization: 'Bearer ' + that.token
+                    },
+                    data: {
+                        id: id,
+                        currUserId: that.userId
+                    }
+                }).then(function (res) {
+                    if (res.data.code == 200) {
+                        that.$message.success(res.data.msg);
+                        that.GamesBudgetMasterList();
+                    } else {
+                        that.$message.error(res.data.msg);
+                    }
+                }).catch(function (error) {
+                    that.$message.error("删除失败!");
+                });
+            }).catch(() => {
+                this.$message.info('已取消删除');
+            });
+        },
+        //保存
+        GamesBudgetMasterSave() {
+            this.enterpriseprofitlabel.id=this.id;
+            this.enterpriseprofitlabel.currUserId=this.userId;
+            var url = "/api/Resource/GamesBudgetMasterOP"
+            var that = this
+            this.$axios({
+                method: 'post',
+                url: url,
+                headers: {
+                    Authorization: 'Bearer ' + that.token
+                },
+                data: that.enterpriseprofitlabel
+            }).then(function (res) {
+                if (res.data.code == 200) {
+                    that.$message.success(res.data.msg);
+                    that.NeweditsVisible = false;
+                    that.GamesBudgetMasterList();
+                } else {
+                    that.$message.error(res.data.msg);
+                }
+            }).catch(function (error) {
+                that.$message.error("保存失败!");
+            });
+        },
+        submitForm(formName) {
+            this.$refs[formName].validate((valid) => {
+                if (valid) {
+                    this.GamesBudgetMasterSave();
+                } else {
+                    this.$message.error("提交失败,请检查表单内容!");
+                }
+            });
+        },
+    },
+    mounted() {
+        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
+        this.token = JSON.parse(localStorage.getItem('userinif')).token;
+        this.GamesBudgetMasterList();
+    }
+}
+</script>
+<style>
+.worldgamescost-all {
+    background-color: #fff;
+    padding: 10px;
+    box-shadow: 0 0 5px #0005;
+    border-radius: 10px;
+    min-height: 840px;
+}
+
+.worldgamescost-table {
+    margin-top: 15px;
+}
+
+.worldgamescost-table .block {
+    text-align: center;
+    margin-top: 10px;
+}
+
+.worldgamescost-hade {
+    display: flex;
+    justify-content: space-between;
+}
+.Newedits-form {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+}
+.Newedits-form .el-form-item{
+    width: 48%;
+}
+.with-unit-right .el-input__inner {
+    padding-right: 60px;
+}
+.with-unit-right::after {
+    content: "CNY";
+    position: absolute;
+    right: 10px;
+    top: 50%;
+    font-weight: 600;
+    transform: translateY(-50%);
+    color: #606266;
+}
+</style>

+ 6 - 0
src/router/index.js

@@ -137,6 +137,7 @@ import EntryQuotation from '@/components/OP/EntryQuotation';
 import FormCollection from '@/components/OP/FormCollection';
 import SharedFile from '@/components/OP/SharedFile';
 import tesseractTest from '@/components/OP/tesseractTest';
+import WorldGamescost from '@/components/Resource/WorldGamescost'
 
 Vue.use(Router)
 
@@ -818,6 +819,11 @@ export default new Router({
           name: 'tesseractTest',
           component: tesseractTest
         },
+        {
+          path: '/home/WorldGamescost',
+          name: 'WorldGamescost',
+          component: WorldGamescost
+        },
       ]
     },
     {