<template>
    <basic-container>
        <avue-crud
            :option="option"
            :table-loading="loading"
            :data="data"
            v-model="form"
            v-model:page="page"
            ref="crud"
            @search-change="searchChange"
            @search-reset="searchReset"
            @selection-change="selectionChange"
            @current-change="currentChange"
            @size-change="sizeChange"
            @refresh-change="refreshChange"
            @on-load="onLoad"
        >
            <template #singleArea="{row}">
                {{row.lowArea + '~' + row.upArea }}
            </template>
            <template #batchArea="{row}">
                {{row.singleDownArea + '~' + row.singleUpArea }}
            </template>
            <template #menu-left>
                <el-button type="primary" @click="handleAdd">新增</el-button>
                <el-button type="danger" @click="handleDelete">删除</el-button>
            </template>
            <template #menu="scope">
                <el-button type="text" @click="editRow(scope.row)">编辑</el-button>
                <el-button type="text" @click="rowDel(scope.row)">删除</el-button>
            </template>
        </avue-crud>
        <add-rule-dialog v-if="showDialog" :isOpen="showDialog" :row="checkRow" :moldAddMore="moldAddMore" @closeDialog="closeDialog"></add-rule-dialog>
    </basic-container>
</template>

<script>
import addRuleDialog from './components/addRuleDialog.vue'
import {getList,deleteRules} from "@/api/basicData/ruleMaintenance"
export default {
    components: { addRuleDialog },
    data() {
        return {
            moldAddMore:false,
            loading: false,
            showDialog:false,
            page: {
                total: 0,
                currentPage: 1,
                pageSize: 10,
            },
            data: [],
            form: {},
            selectionList:[],
            option: {
                height: "auto",
                calcHeight: 32,
                tip: false,
                // size: "medium",
                simplePage: true,
                searchShow: true,
                searchMenuSpan: 6,
                searchIcon: true,
                searchIndex: 3,
                tree: false,
                border: true,
                index: true,
                selection: true,
                viewBtn: false,
                delBtn: false,
                editBtn: false,
                addBtn: false,
                editBtnText: "修改",
                viewBtnIcon: " ",
                delBtnIcon: " ",
                editBtnIcon: " ",
                viewBtnText: "详情",
                labelWidth: 120,
                menuWidth: 120,
                dialogWidth: 1040,
                dialogClickModal: false,
                searchEnter: true,
                excelBtn: false,
                filterBtn: true,
                searchShowBtn: false,
                columnSort: true,
                excelBtn: true,
                columnSort: true,
                index: false,
                showOverflowTooltip: true,
                searchLabelPosition: "left",
                searchLabelPosition: "left",
                searchGutter: 24,
                searchSpan: 6,
                menuAlign: "center",
                gridBtn: false,
                searchMenuPosition: "right",
                addBtnIcon: " ",
                viewBtnIcon: " ",
                delBtnIcon: " ",
                editBtnIcon: " ",
                align: "center",
                column: [
                    {
                        label: "工艺能力",
                        prop: "craftAbilityId",
                        type:"select",
                        sortable: false,
                        filter: true,
                        span: 12,
                        search: true,
                        dicUrl:"/blade-desk/BA/craftAbility/findList",
                        props:{
                            label:"caName",
                            value:"id"
                        },
                        width:200,
                    },
                    {
                        label: "零件号",
                        prop: "partCode",
                        sortable: false,
                        filter: true,
                        span: 12,
                        width:150,
                        search: true,
                    },
                    {
                        label: "生产标识",
                        prop: "prodMark",
                        // type:"select",
                        sortable: false,
                        filter: true,
                        span: 12,
                        width:150,
                        search: false,
                        multiple: true,
                        // dicUrl:"/blade-scheduling/qualityGrade/getGrades",
                        // props:{
                        //     label:"qualityGrade",
                        //     value:"id"
                        // }
                    },
                    {
                        label: "单件面积上下限(dm²)",
                        prop: "singleArea",
                        sortable: false,
                        filter: true,
                        span: 12,
                        width:200,
                        search: false,
                        multiple: true,
                    },
                    {
                        label: "单批面积上下限(dm²)",
                        prop: "batchArea",
                        sortable: false,
                        filter: true,
                        width:200,
                        span: 12,
                        search: false,
                        multiple: true,
                    },
                    {
                        label: "限制类型",
                        prop: "limitType",
                        type:"select",
                        sortable: false,
                        filter: true,
                        span: 12,
                        search: true,
                        width:200,
                        dicUrl:'/api/blade-system/dict/dictionary?code=AssignLimit',
                        props:{
                            label:"dictValue",
                            value:"dictKey"
                        }
                        // dicData:[
                        //     {label:"必须",value:1}
                        // ]
                    },
                    {
                        label: "指定类型",
                        prop: "pointType",
                        type:"select",
                        sortable: false,
                        filter: true,
                        span: 12,
                        search: true,
                        width:200,
                        dicUrl:'/api/blade-system/dict/dictionary?code=AssignPoint',
                        props:{
                            label:"dictValue",
                            value:"dictKey"
                        }
                        // dicData:[
                        //     {label:"厂内",value:1},
                        //     {label:"外协",value:2},
                        // ]
                    },
                    {
                        label: "外协厂商",
                        prop: "oemId",
                        type:'select',
                        sortable: false,
                        filter: true,
                        span: 12,
                        search: true,
                        width:200,
                        dicUrl:"/api/blade-desk/BA/Oem/listForSelect",
                        props:{
                            label:"ocName",
                            value:"id"
                        }
                    },
                    {
                        label: "作业中心",
                        prop: "centerId",
                        type:'select',
                        sortable: false,
                        filter: true,
                        span: 12,
                        search: true,
                        width:200,
                        dicUrl:"/api/blade-desk/BA/WorkCenter/listForSelect",
                        props:{
                            label:"wcName",
                            value:"id"
                        }
                    },
                    {
                        label: "备注",
                        prop: "remark",
                        sortable: false,
                        filter: true,
                        width:150,
                        span: 12,
                        search: false,
                    },
                    {
                        label: "维护人",
                        prop: "createUserName",
                        sortable: false,
                        filter: true,
                        width:150,
                        span: 12,
                        search: false,
                    },
                    {
                        label: "维护时间",
                        prop: "createTime",
                        sortable: false,
                        width:200,
                        filter: true,
                        span: 12,
                        search: false,
                    },
                ]
            },
            checkRow:{}
        }
    },
    mounted() {
    },
    methods:{
        handleAdd(){
            this.checkRow = {}
            this.moldAddMore = true
            this.showDialog = true
        },
        selectionChange(list){
            this.selectionList = list
        },
        handleDelete(){
            if(this.selectionList.length == 0){
                this.$message.error('请至少选择一条数据')
                return
            }
            this.$confirm('确定删除数据吗?', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            }).then(() => {
                deleteRules({
                    ids:this.selectionList.map(item => item.id).join(',')
                }).then(res =>{
                    this.$message.success('删除成功')
                    this.onLoad()
                })
            })
        },
        editRow(row){
            this.moldAddMore = false
            this.checkRow = row
            this.showDialog = true
        },
        rowDel(row){
            this.$confirm('确定删除数据吗?', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            }).then(() => {
                deleteRules({
                    ids:row.id
                }).then(res =>{
                    this.$message.success('删除成功')
                    this.onLoad()
                })
            })
        },
        closeDialog(val){
            this.showDialog = false
            if(val){
                this.onLoad()
            }
        },
        searchChange(params, done){
            this.query = params;
            this.page.currentPage = 1
            this.onLoad()
            done()
        },
        searchReset(){
            this.query = {}
            this.onLoad()
        },
        currentChange(currentPage){
            this.page.currentPage = currentPage
        },
        sizeChange( pageSize){
            this.page.pageSize = pageSize
        },
        refreshChange(){
            this.onLoad()
        },
        onLoad(){
            getList({
                current:this.page.currentPage,
                size:this.page.pageSize,
                ...this.query
            }).then(res =>{
                this.data = res.data.data.records
                this.page.total = res.data.data.total
            })
        }
    }
}
</script>

<style>

</style>