licp
2024-03-18 bbc0f06f17c9c3c9ed325af581dfdfc9b9dcaa82
完成检验下单模板功能
已修改3个文件
已添加1个文件
337 ■■■■ 文件已修改
src/assets/api/controller.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/do/b1-ins-order/add.vue 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/b1-report-preparation.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
static/js/menu.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -120,6 +120,10 @@
    upInsOrder: "/insOrder/upInsOrder", //检验下发
  getInsOrder: "/insOrder/getInsOrder", //查询检验下单内容详情
  upInsOrderOfState: "/insOrder/upInsOrderOfState", //审核检验单机进行状态修改
  addInsOrderTemplate: "/insOrder/addInsOrderTemplate", //添加检验单模板
  selectInsOrderTemplate: "/insOrder/selectInsOrderTemplate", //查询检验单模板
  selectInsOrderTemplateById: "/insOrder/selectInsOrderTemplateById", //通过检验单模板id获取检验单模板内容
  delInsOrderTemplate: "/insOrder/delInsOrderTemplate", //删除检验单模板
}
const sampleOrder = {
src/components/do/b1-ins-order/add.vue
@@ -88,10 +88,10 @@
            <el-row class="title">
                <el-col :span="6" style="padding-left: 20px;">委托单信息</el-col>
                <el-col :span="18" style="text-align: right;">
                    <el-select v-model="template" size="medium" placeholder="下单模板" style="margin-right: 10px;" v-show="active==1">
                        <el-option v-for="(a, ai) in templates" :key="ai" :value="a.value" :label="a.label">
              <span style="float: left">{{ a.label }}</span>
              <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" @click.stop="handleDelete"></i>
                    <el-select v-model="template" size="medium" placeholder="下单模板" style="margin-right: 10px;" v-show="active==1" @change="selectInsOrderTemplateById">
                        <el-option v-for="(a, ai) in templates" :key="ai" :value="a.id" :label="a.name">
              <span style="float: left">{{ a.name }}</span>
              <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" @click.stop="handleDelete(a)"></i>
            </el-option>
                    </el-select>
                    <el-button size="medium" @click="templateDia=true" v-show="active==1">
@@ -383,12 +383,7 @@
        data() {
            return {
                template: null,
                templates: [
          {
            label:'0000',
            value:1
          }
        ],
                templates: [],
                addObj: {
                    entrustCode: null,
                    custom: null,
@@ -462,6 +457,7 @@
            this.selectEnumByCategoryForType()
            this.getUserNow()
            this.selectStandardTreeList()
      this.selectInsOrderTemplate()
      if(this.active==1){
        // ä¸‹å•流程
      }else {
@@ -503,20 +499,30 @@
                this.selectUserDia = false
            },
            save() {
                this.saveLoad = true
                this.$axios.post(this.$api.insOrder.addInsOrder,{
                    insOrder: this.addObj,
                    list: this.sampleList
                },{
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res=>{
                    this.saveLoad = false
                    if(res.code==201)return
                    this.$message.success('已提交')
                    this.$parent.playOrder(0)
                })
        if(!this.addObj.custom){
          this.$message.error('未选择下单客户')
        }else if(!this.addObj.type){
          this.$message.error('未选择紧急程度')
        }else if(this.sampleList.length<1){
          this.$message.error('请添加一个样品')
        }else if(!this.sampleList.every(m=>m.sampleCode)){
          this.$message.error('输入样品编号')
        }else{
          this.saveLoad = true
          this.$axios.post(this.$api.insOrder.addInsOrder,{
            insOrder: this.addObj,
            list: this.sampleList
          },{
            headers: {
              'Content-Type': 'application/json'
            }
          }).then(res=>{
            this.saveLoad = false
            if(res.code==201)return
            this.$message.success('已提交')
            this.$parent.playOrder(0)
          })
        }
            },
      upInsOrderOfState(state){
        this.saveLoad = true
@@ -692,34 +698,64 @@
                }
                return '';
            },
      selectInsOrderTemplate(){
        this.$axios.get(this.$api.insOrder.selectInsOrderTemplate).then(res=>{
                    if(res.code==201)return
                    this.templates = res.data
                })
      },
      // åˆ é™¤æ¨¡æ¿--调用接口
      handleDelete(){
      handleDelete(row){
        this.$confirm('是否删除当前数据?', "警告", {
                            confirmButtonText: "确定",
                            cancelButtonText: "取消",
                            type: "warning"
                        }).then(() => {
                            // this.$axios.post(this.delUrl, {
                            //     id: row.id
                            // }).then(res => {
                            //     if (res.code === 201) {
                            //         return
                            //     }
                            //     this.$message.success('删除成功')
                            //     this.selectList()
                            // }).catch(e => {
                            //     this.$message.error('删除失败')
                            // })
                            this.$axios.post(this.$api.insOrder.delInsOrderTemplate, {
                                id: row.id
                            }).then(res => {
                                if (res.code === 201) {
                                    return
                                }
                                this.$message.success('删除成功')
                                this.selectInsOrderTemplate()
                            }).catch(e => {
                                this.$message.error('删除失败')
                            })
                        }).catch(() => {})
      },
      // ä¿å­˜æ¨¡æ¿
      addTemplateDia(){
        if(this.templateName){
          this.templateLoading = true;
          this.$axios.post(this.$api.insOrder.addInsOrderTemplate,{
            name:this.templateName,
            thing:JSON.stringify({addObj:this.addObj,sampleList:this.sampleList})
          },{
                    headers: {
                        'Content-Type': 'application/json'
                    }
                }).then(res=>{
                    if(res.code==201)return
          this.templateLoading = false;
          this.templateDia = false;
          this.$message.success('保存成功')
          this.selectInsOrderTemplate()
          this.templateName = ''
                })
        }else{
          this.$message.error('请填写模板名称')
        }
      }
      },
      // æŸ¥è¯¢æ¨¡æ¿
      selectInsOrderTemplateById(e){
        this.$axios.post(this.$api.insOrder.selectInsOrderTemplateById+'?id='+e).then(res=>{
                    if(res.code==201)return
          let obj = JSON.parse(res.data)
          this.addObj = obj.addObj;
          this.sampleList = obj.sampleList;
                })
      },
        }
    }
</script>
src/components/view/b1-report-preparation.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,221 @@
<style scoped>
    .title {
        height: 60px;
        line-height: 60px;
    }
    .search {
        background-color: #fff;
        height: 80px;
        display: flex;
        align-items: center;
    }
    .search_thing {
        display: flex;
        align-items: center;
        height: 50px;
    }
    .search_label {
        width: 120px;
        font-size: 14px;
        text-align: right;
    }
    .search_input {
        width: calc(100% - 120px);
    }
    .table {
        margin-top: 10px;
        background-color: #fff;
        width: calc(100% - 40px);
        height: calc(100% - 60px - 80px - 10px - 40px);
        padding: 20px;
    }
    .el-form-item {
        margin-bottom: 16px;
    }
</style>
<template>
    <div class="inspection_order">
        <div style="width: 100%;height: 100%;">
            <div>
                <el-row class="title">
                    <el-col :span="12" style="padding-left: 20px;">报告编制</el-col>
                </el-row>
            </div>
            <div class="search">
                <div class="search_thing">
                    <div class="search_label">样品名称:</div>
                    <div class="search_input"><el-input size="small" placeholder="请输入" clearable
                            v-model="componentData.entity.sample" @keyup.enter.native="refreshTable()"></el-input></div>
                </div>
                <div class="search_thing">
                    <div class="search_label">状态:</div>
                    <div class="search_input">
          <el-select v-model="componentData.entity.status" placeholder="全部">
            <el-option
              v-for="item in statusList"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
          </div>
                </div>
                <div class="search_thing" style="padding-left: 30px;">
                    <el-button size="small" @click="refresh()">重 ç½®</el-button>
                    <el-button size="small" type="primary" @click="refreshTable()">查 è¯¢</el-button>
                </div>
            </div>
            <div class="table">
                <ValueTable ref="ValueTable" :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData"
                    :key="upIndex" @handleWeave="handleWeave"/>
            </div>
        </div>
    </div>
</template>
<script>
    import ValueTable from '../tool/value-table.vue'
    export default {
        components: {
            ValueTable
        },
        data() {
            return {
                componentData: {
                    entity: {
                        entrustCode: null,
                        sample: null,
                        state: 1,
                        orderBy: {
                            field: 'id',
                            order: 'asc'
                        }
                    },
                    isIndex: true,
                    showSelect: false,
                    select: false,
                    do: [{
                        id: 'handleWeave',
                        font: '在线编制',
                        type: 'text',
                        method: 'handleWeave',
                        disabFun: (row, index) => {
                            return row.state != 1
                        }
                    }, {
                        id: 'download',
                        font: '下载',
                        type: 'text',
                        method: 'download',
                        disabFun: (row, index) => {
                            return row.state != 1
                        }
                    }, {
                        id: 'handleUpload',
                        font: '上传',
                        type: 'text',
                        method: 'handleUpload',
                        disabFun: (row, index) => {
                            return row.state != 0
                        }
                    }, {
                        id: 'handlRestore',
                        font: '还原',
                        type: 'text',
                        method: 'handleRestore'
                    }, {
            id: 'handleIssued',
                        font: '审核',
                        type: 'text',
                        method: 'handleIssued',
                        disabFun: (row, index) => {
                            return row.state != 1 || row.sendTime != null
                        }
                    }, {
            id: 'handleApprove',
                        font: '批准',
                        type: 'text',
                        method: 'handleApprove',
                        disabFun: (row, index) => {
                            return row.state != 1 || row.sendTime != null
                        }
                    }],
                    linkEvent:{
                      entrustCode:{
                        method:'selectAllByOne'
                      }
                    },
                    tagField: {
                        type: {
                            select: [{
                                value: 0,
                                type: 'success',
                                label: '普通'
                            }, {
                                value: 1,
                                type: 'warning',
                                label: '优先'
                            }, {
                                value: 2,
                                type: 'danger',
                                label: '紧急'
                            }]
                        },
                        createUser: {
                            select: []
                        }
                    },
                    selectField: {},
                    requiredAdd: [],
                    requiredUp: []
                },
                entityCopy: {},
                upIndex: 0,
        statusList:[]
            }
        },
        mounted() {
            this.entityCopy = this.HaveJson(this.componentData.entity)
            this.getPower()
        },
        methods: {
            refreshTable() {
                this.$refs['ValueTable'].selectList()
            },
            refresh() {
                this.componentData.entity = this.HaveJson(this.entityCopy)
                this.upIndex++
            },
      handleWeave(){},
            // æƒé™åˆ†é…
            getPower(radio) {
                let power = JSON.parse(sessionStorage.getItem('power'))
                let up = false
                let del = false
                let add = false
                for (var i = 0; i < power.length; i++) {
                    if (power[i].menuMethod == 'upInsOrder') {
                        up = true
                    }
                    if (power[i].menuMethod == 'addInsOrder') {
                        add = true
                    }
                }
                if (!up) {
                    this.componentData.do.splice(4, 1)
                }
            },
            handleClose() {
                this.upLoad = false;
            },
        }
    }
</script>
static/js/menu.js
@@ -27,7 +27,7 @@
        }, {
            v: "报告编制",
            i: "font icon-erjidaohang",
            u: "",
            u: "b1-report-preparation",
            p: ""
        }, {
            v: "费用统计",