| | |
| | | </div> |
| | | <el-row class="search-condition"> |
| | | <el-col :span="5"> |
| | | <el-select v-model="searchData.test" :prefix-icon="Search" placeholder="请选择" style="width: 100%;padding-right: 20px;"> |
| | | <el-select multiple v-model="searchData.typeId" :prefix-icon="Search" placeholder="请选择" style="width: 100%;padding-right: 20px;"> |
| | | <template #prefix><span style="margin-right: 6px;">产品类型</span></template> |
| | | <el-option v-for="item in testList" :key="item.value" :label="item.label" :value="item.value" /> |
| | | <el-option v-for="item in typeIdList" :key="item.id" :label="item.name" :value="item.id" /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-input v-model="searchData.test" placeholder="请输入" style="padding-right: 20px;"> |
| | | <el-input v-model="searchData.standardModel" placeholder="请输入" style="padding-right: 20px;"> |
| | | <template #prefix><span style="margin-right: 6px;">规格型号</span></template> |
| | | </el-input> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-select v-model="searchData.test" :prefix-icon="Search" placeholder="请选择" style="width: 100%;padding-right: 20px;"> |
| | | <el-select v-model="searchData.status" :prefix-icon="Search" placeholder="请选择" style="width: 100%;padding-right: 20px;"> |
| | | <template #prefix><span style="margin-right: 6px;">状态</span></template> |
| | | <el-option v-for="item in testList" :key="item.value" :label="item.label" :value="item.value" /> |
| | | <el-option key="0" label="停用" value="0" /> |
| | | <el-option key="1" label="启用" value="1" /> |
| | | </el-select> |
| | | </el-col> |
| | | <el-col :span="5"> |
| | | <el-input v-model="searchData.test" placeholder="请输入"> |
| | | <el-input v-model="searchData.keyWord" placeholder="请输入"> |
| | | <template #prefix><span style="margin-right: 6px;">编号/名称</span></template> |
| | | </el-input> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-drawer title="查询设置" v-model="drawer" :direction="direction" :before-close="handleClose" size="780" class="drawerClass"> |
| | | <div> |
| | | |
| | | <div class="drawer-form"> |
| | | <div class="drawer-left"> |
| | | <div class="plan-content-title">基础字段</div> |
| | | <el-checkbox-group v-model="checkData"> |
| | | <el-checkbox v-for="item in checkList" :label="item.fieldName" :value="item.fieldId" /> |
| | | </el-checkbox-group> |
| | | <div class="plan-content-title">扩展字段</div> |
| | | </div> |
| | | <div class="drawer-right"> |
| | | <div class="plan-content-title">已选字段</div> |
| | | <ul class="drawer-ul"> |
| | | <li v-for="(item,index) in checkData"> |
| | | <span>{{item}}</span> |
| | | <el-icon style="cursor: pointer;" @click="delIcon(index)"><Delete /></el-icon> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="drawer-foot"> |
| | | <el-button @click="closeDrawer">关闭</el-button> |
| | | <el-button type="primary" @click="drawerConfirm" disabled>保存</el-button> |
| | | <el-button type="primary" @click="drawerConfirm">保存</el-button> |
| | | </div> |
| | | </el-drawer> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="产品类型" name="second"> |
| | | <!-- <person-post v-if="activeName == 'second'"></person-post> --> |
| | | <div v-if="activeName == 'second'"> |
| | | <div> |
| | | <el-button type="primary" @click="addTypeData" class="marginR12">快速添加</el-button> |
| | | <el-button type="danger" plain @click="delTypeData" class="marginR12">删除</el-button> |
| | | </div> |
| | | <el-row style="margin-top: 12px;" v-if="isAddType"> |
| | | <el-col :span="4"> |
| | | <el-input v-model="typeData.name" size="small" placeholder="请输入名称" style="padding-right: 20px;"></el-input> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-input v-model="typeData.remark" size="small" placeholder="请输入描述" style="padding-right: 20px;"></el-input> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button type="primary" size="small" @click="addTypeDataSubmit">确定</el-button> |
| | | <el-button size="small" @click="addTypeDataCencel">取消</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <div class="product-type-table"> |
| | | <el-table ref="multipleTableRef" :data="productTypeTableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column prop="name" label="产品类型名称"></el-table-column> |
| | | <el-table-column prop="remark" label="描述"></el-table-column> |
| | | <el-table-column prop="status" label="状态"> |
| | | <template #default="scope"> |
| | | <span>{{ scope.row.status == "1"?"启用":"停用" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" label="操作"> |
| | | <template #default="scope"> |
| | | <el-button text type="primary" size="small" @click="del_product_type(scope.row, scope.$index)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | style="margin-top: 12px;" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="currentPage4" |
| | | :page-sizes="[15, 50, 100]" |
| | | :page-size="15" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="productTypeTableData.length"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <!-- <div> |
| | | <div class="Product-table"> |
| | | <el-table ref="multipleTableRef" :data="tableData" border style="width: 100%" class="multipleTableRef" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column prop="ProductValue" label="字典名称"></el-table-column> |
| | | <el-table-column prop="sort" label="字典排序"></el-table-column> |
| | | <el-table-column prop="isSealed" label="封存"> |
| | | <template #default="scope"> |
| | | <div>{{scope.row.isSealed == 0?"否":"是"}}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column fixed="right" label="操作"> |
| | | <template #default="scope"> |
| | | <el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">查看</el-button> |
| | | <el-button type="text" size="small" @click="table_edit(scope.row, scope.$index)">编辑</el-button> |
| | | <el-button text type="primary" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button> |
| | | <el-button text type="primary" size="small" @click="table_allocation(scope.row, scope.$index)">字典配置</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | style="margin-top: 12px;" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | :current-page="currentPage4" |
| | | :page-sizes="[15, 50, 100]" |
| | | :page-size="15" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="total"> |
| | | </el-pagination> |
| | | </div> --> |
| | | </div> |
| | | |
| | | <save-dialog v-if="dialog.save" ref="saveDialog" @success="addProductSuccess" @closed="dialog.save=false"></save-dialog> |
| | | <!-- 删除 --> |
| | | <el-dialog title="" v-model="delTypeModel" :width="400" destroy-on-close> |
| | | <div> |
| | | <div style="margin-bottom: 6px;"><span class="delIcon">!</span>请你谨慎选择!</div> |
| | | <div style="text-indent: 24px;">删除数据会影响已关联的业务 ,若您想在已关联的业务中依然显示这些数据, 您可以选择 停用 操作。停用后此数据将不能再被新业务使用。</div> |
| | | </div> |
| | | <template #footer> |
| | | <div class="footerDiv"> |
| | | <div class="delBtn" @click="delTypeDataSingle(0)">删除</div> |
| | | <div class="delBtn" @click="delTypeDataSingle(1)">停用</div> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | <script> |
| | | import * as ElementPlusIconsVue from '@element-plus/icons-vue' |
| | |
| | | name: "allocation", |
| | | data(){ |
| | | return { |
| | | checkData: [], |
| | | checkList: [], |
| | | id: "", |
| | | delTypeModel: false, |
| | | isAddType: false, |
| | | typeData: { |
| | | name: "", |
| | | remark: "" |
| | | }, |
| | | productTypeTableData: [], |
| | | typeIdList: [], |
| | | direction: "rtl", |
| | | drawer: false, |
| | | testList: [], |
| | |
| | | selection: [], |
| | | total: 0, |
| | | searchData: { |
| | | test: "", |
| | | keyWord: "", |
| | | standardModel: "", |
| | | status: "1", |
| | | typeId: [], |
| | | current: "1", |
| | | size: "15" |
| | | }, |
| | |
| | | }, |
| | | mounted(){ |
| | | //this.searchBtn(); |
| | | this.getProductType(); |
| | | this.getProductTypeSelect(); |
| | | this.getFields(); //查询设置 |
| | | }, |
| | | components: { |
| | | ...ElementPlusIconsVue,saveDialog,importTable |
| | | }, |
| | | methods: { |
| | | delIcon(index) { |
| | | this.checkData.splice(index,1); |
| | | }, |
| | | getFields() { |
| | | this.$HTTP.get(`/api/blade-system/custom-template-field-relation/getConditionFields?templateId=`).then(res => { |
| | | if (res.code == 200) { |
| | | this.checkList = res.data.systemFieldList; |
| | | res.data.systemFieldList.forEach(item=> { |
| | | if(item.querySupport == 1) this.checkData.push(item.fieldName); |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | delTypeDataSingle(type) { |
| | | if(type == 0) { //删除 |
| | | this.$HTTP.delete(`/api/blade-cps/product-type/remove`,[this.id]).then(res=> { |
| | | if(res.code == 200) { |
| | | this.$message.success("操作成功"); |
| | | this.delTypeModel = false; |
| | | this.id = ""; |
| | | this.getProductType(); |
| | | } |
| | | }) |
| | | }else { //停用 |
| | | var obj = { |
| | | ids: [this.id], |
| | | status: 0 |
| | | } |
| | | this.$HTTP.put(`/api/blade-cps/product-type/change-status`,obj).then(res=> { |
| | | if(res.code == 200) { |
| | | this.$message.success("操作成功"); |
| | | this.delTypeModel = false; |
| | | this.id = ""; |
| | | this.getProductType(); |
| | | } |
| | | }) |
| | | } |
| | | this.getProductTypeSelect(); |
| | | }, |
| | | addTypeDataSubmit() { |
| | | this.$HTTP.post(`/api/blade-cps/product-type/saveOrUpdate`,this.typeData).then(res => { |
| | | if (res.code == 200) { |
| | | this.getProductType(); |
| | | this.clearTypeData(); |
| | | this.getProductTypeSelect(); |
| | | } |
| | | }) |
| | | }, |
| | | addTypeDataCencel() { |
| | | this.clearTypeData(); |
| | | }, |
| | | clearTypeData() { |
| | | this.isAddType = false; |
| | | this.typeData = { |
| | | name: "", |
| | | remark: "" |
| | | } |
| | | }, |
| | | getProductType() { |
| | | this.$HTTP.get(`/api/blade-cps/product-type/page?current=1&size=10`).then(res => { |
| | | if (res.code == 200) { |
| | | this.productTypeTableData = res.data.records; |
| | | } |
| | | }) |
| | | }, |
| | | del_product_type(row) { |
| | | this.id = row.id; |
| | | this.delTypeModel = true; |
| | | }, |
| | | getProductTypeSelect() { |
| | | this.$HTTP.get(`/api/blade-cps/product-type/page?size=-1`).then(res => { |
| | | if (res.code == 200) { |
| | | this.typeIdList = res.data.records; |
| | | } |
| | | }) |
| | | }, |
| | | addDrawer() { |
| | | this.drawer = true; |
| | | }, |
| | |
| | | this.drawer = false; |
| | | }, |
| | | drawerConfirm() { |
| | | var ids = []; |
| | | this.checkList.forEach(item=> { |
| | | this.checkData.forEach(item1=> { |
| | | if(item1 == item.fieldName) { |
| | | ids.push(item.fieldId) |
| | | } |
| | | }) |
| | | }) |
| | | var obj = { |
| | | ids: ids, |
| | | templateId: "" |
| | | } |
| | | this.$HTTP.post(`/api/blade-system/custom-template-field-relation/submitConditionFields`,obj).then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success("操作成功"); |
| | | } |
| | | }) |
| | | this.drawer = false; |
| | | }, |
| | | handleClose(done) { |
| | |
| | | handleSelectionChange(selection) { |
| | | this.selection = selection; |
| | | }, |
| | | addTypeData() { |
| | | this.isAddType = true; |
| | | }, |
| | | delTypeData() { |
| | | |
| | | }, |
| | | delData() { |
| | | if(this.selection.length == 0) { |
| | | this.$message({ |
| | |
| | | margin-left: 12px; |
| | | margin-top: 7px; |
| | | } |
| | | .product-type-table { |
| | | margin-top: 12px; |
| | | } |
| | | .delIcon { |
| | | color: #fff; |
| | | background: red; |
| | | border-radius: 50%; |
| | | display: inline-block; |
| | | width: 20px; |
| | | height: 20px; |
| | | font-size: 14px; |
| | | text-align: center; |
| | | line-height: 20px; |
| | | margin-right: 6px; |
| | | } |
| | | .footerDiv { |
| | | text-align: center; |
| | | } |
| | | .delBtn { |
| | | color: #fff; |
| | | width: 112px; |
| | | height: 32px; |
| | | display: inline-block; |
| | | color: #fa554c; |
| | | background-color: #fff; |
| | | border: 1px solid #fdbbb7; |
| | | text-align: center; |
| | | line-height: 32px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .delBtn:nth-child(1) { |
| | | margin-right: 4px; |
| | | } |
| | | |
| | | .delBtn:hover { |
| | | background-color: #f34d5b; |
| | | border-color: #f34d5b; |
| | | color: #fff; |
| | | } |
| | | .drawer-foot { |
| | | position: fixed; |
| | | bottom: 20px; |
| | | right: 20px; |
| | | } |
| | | .plan-content-title { |
| | | border-left: 2px solid #337ecc; |
| | | padding: 0 8px; |
| | | font-weight: 700; |
| | | font-size: 14px; |
| | | text-align: left; |
| | | color: #333; |
| | | margin-bottom: 16px; |
| | | margin-top: 12px; |
| | | } |
| | | .drawer-form { |
| | | height: calc(100% - 60px); |
| | | overflow: auto; |
| | | border-top: 1px solid rgba(59,142,142,.18); |
| | | border-bottom: 1px solid rgba(59,142,142,.18); |
| | | padding: 0 24px; |
| | | display: flex; |
| | | } |
| | | .drawer-left { |
| | | width:70%; |
| | | border-right: 1px solid rgba(59,142,142,.18); |
| | | padding: 24px; |
| | | } |
| | | .drawer-right { |
| | | flex: 1; |
| | | padding: 24px; |
| | | } |
| | | .drawer-ul li { |
| | | list-style: none; |
| | | font-size: 14px; |
| | | margin-bottom: 12px; |
| | | } |
| | | .drawer-ul li span { |
| | | margin-right: 50px; |
| | | display: inline-block; |
| | | min-width: 80px; |
| | | } |
| | | </style> |