商品添加二级类目

master
CJYXTX\27961 6 months ago
parent 1aaf1e7817
commit 9349912bfe

@ -76,27 +76,60 @@ public class NxProductController {
@Autowired
private ConfigValueUtil configValueUtil;
// /**
// * 列表
// *
// * @param nxProductPagination
// * @return
// */
// @Operation(summary = "获取列表")
// @PostMapping("/getList")
// public ActionResult list(@RequestBody NxProductPagination nxProductPagination)throws IOException{
// List<NxProductEntity> list= nxProductService.getList(nxProductPagination);
// List<Map<String, Object>> realList=new ArrayList<>();
// for (NxProductEntity entity : list) {
// Map<String, Object> nxProductMap=JsonUtil.entityToMap(entity);
// nxProductMap.put("id", nxProductMap.get("id"));
// //副表数据
// //子表数据
// realList.add(nxProductMap);
// }
// //数据转换
// realList = generaterSwapUtil.swapDataList(realList, NxProductConstant.getFormData(), NxProductConstant.getColumnData(), nxProductPagination.getModuleId(),false);
//
// //返回对象
// PageListVO vo = new PageListVO();
// vo.setList(realList);
// PaginationVO page = JsonUtil.getJsonToBean(nxProductPagination, PaginationVO.class);
// vo.setPagination(page);
// return ActionResult.success(vo);
// }
/**
*
*
* @param nxProductPagination
* @return
*/
*
*
* @param nxProductPagination
* @return
*/
@Operation(summary = "获取列表")
@PostMapping("/getList")
public ActionResult list(@RequestBody NxProductPagination nxProductPagination)throws IOException{
List<NxProductEntity> list= nxProductService.getList(nxProductPagination);
List<Map<String, Object>> realList=new ArrayList<>();
for (NxProductEntity entity : list) {
Map<String, Object> nxProductMap=JsonUtil.entityToMap(entity);
nxProductMap.put("id", nxProductMap.get("id"));
//副表数据
//子表数据
Map<String, Object> nxProductMap=JsonUtil.entityToMap(entity);
nxProductMap.put("id", nxProductMap.get("id"));
//副表数据
//子表数据
realList.add(nxProductMap);
}
//数据转换
realList = generaterSwapUtil.swapDataList(realList, NxProductConstant.getFormData(), NxProductConstant.getColumnData(), nxProductPagination.getModuleId(),false);
boolean isPc = "pc".equals(ServletUtil.getHeader("jnpf-origin" ));
if(isPc){
//分组和树形的树形数据转换
realList = generaterSwapUtil.swapDataList(realList, NxProductConstant.getColumnData(), "id");
}
//返回对象
PageListVO vo = new PageListVO();
vo.setList(realList);
@ -104,6 +137,8 @@ public class NxProductController {
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
*
*
@ -277,15 +312,15 @@ public class NxProductController {
return ActionResult.success("删除成功");
}
/**
*
* @param id
* @param nxProductForm
* @return
*/
*
* @param id
* @param nxProductForm
* @return
*/
@PutMapping("/{id}")
@Operation(summary = "更新")
public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid NxProductForm nxProductForm,
@RequestParam(value = "isImport", required = false) boolean isImport){
@RequestParam(value = "isImport", required = false) boolean isImport){
nxProductForm.setId(id);
if (!isImport) {
String b = nxProductService.checkForm(nxProductForm,1);
@ -323,11 +358,11 @@ public class NxProductController {
return ActionResult.success("删除成功");
}
/**
* ()
* 使-
* @param id
* @return
*/
* ()
* 使-
* @param id
* @return
*/
@Operation(summary = "表单信息(详情页)")
@GetMapping("/detail/{id}")
public ActionResult detailInfo(@PathVariable("id") String id){
@ -343,11 +378,11 @@ public class NxProductController {
return ActionResult.success(nxProductMap);
}
/**
* ()
* 使-
* @param id
* @return
*/
* ()
* 使-
* @param id
* @return
*/
@Operation(summary = "信息")
@GetMapping("/{id}")
public ActionResult info(@PathVariable("id") String id){

@ -16,6 +16,8 @@ import java.util.Date;
public class NxProductEntity {
@TableId(value ="ID" )
private String id;
@TableField(value = "PARENT_ID" , updateStrategy = FieldStrategy.IGNORED)
private String parentId;
@TableField(value = "CODE" , updateStrategy = FieldStrategy.IGNORED)
private String code;
@TableField(value = "NAME" , updateStrategy = FieldStrategy.IGNORED)

@ -50,4 +50,7 @@ public class NxProductForm {
/** 图片 **/
@JsonProperty("photo")
private Object photo;
/** 商品父类 **/
@JsonProperty("parentId")
private Object parentId;
}

@ -43,9 +43,15 @@ public class NxProductPagination extends Pagination {
/** 公司id */
@JsonProperty("companyId")
private Object companyId;
@JsonProperty("excludeIdList")
private List<String> excludeIdList;
/**
*
*/
private String treeParentValue;
/**
*
*/
private boolean hasParam=false;
}

@ -1,135 +1,133 @@
<template>
<el-dialog title="详情"
:close-on-click-modal="false" append-to-body
:visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
width="600px">
<el-row :gutter="15" class="">
<el-form ref="formRef" :model="dataForm" size="small" label-width="100px" label-position="right" >
<template v-if="!loading">
<el-col :span="12" >
<jnpf-form-tip-item label="编码"
prop="code" >
<p>{{dataForm.code}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12" >
<jnpf-form-tip-item label="名称"
prop="name" >
<p>{{dataForm.name}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12" >
<jnpf-form-tip-item label="规格"
prop="spec" >
<p>{{dataForm.spec}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12" >
<jnpf-form-tip-item label="库存单位"
prop="unit" >
<p>{{ dataForm.unit }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="描述"
prop="description" >
<p>{{dataForm.description}}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24" >
<jnpf-form-tip-item label="图片"
prop="photo" >
<JnpfUploadImg v-model="dataForm.photo"
disabled
detailed :fileSize="10" sizeUnit="MB" :limit="1" pathType="defaultPath" :isAccount="0" >
</JnpfUploadImg>
</jnpf-form-tip-item>
</el-col>
</template>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
</span>
<Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
<el-dialog title="详情" :close-on-click-modal="false" append-to-body :visible.sync="visible"
class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
<el-row :gutter="15" class="">
<el-form ref="formRef" :model="dataForm" size="small" label-width="100px" label-position="right">
<template v-if="!loading">
<el-col :span="24">
<jnpf-form-tip-item label="商品父类" prop="parentId">
<p>{{ dataForm.parentId }}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="编码" prop="code">
<p>{{ dataForm.code }}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="名称" prop="name">
<p>{{ dataForm.name }}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="规格" prop="spec">
<p>{{ dataForm.spec }}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="库存单位" prop="unit">
<p>{{ dataForm.unit }} </p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24">
<jnpf-form-tip-item label="描述" prop="description">
<p>{{ dataForm.description }}</p>
</jnpf-form-tip-item>
</el-col>
<el-col :span="24">
<jnpf-form-tip-item label="图片" prop="photo">
<JnpfUploadImg v-model="dataForm.photo" disabled detailed :fileSize="10" sizeUnit="MB"
:limit="1" pathType="defaultPath" :isAccount="0">
</JnpfUploadImg>
</jnpf-form-tip-item>
</el-col>
</template>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
</span>
<Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
</el-dialog>
</template>
<script>
import request from '@/utils/request'
import request from '@/utils/request'
import { getConfigData } from '@/api/onlineDev/visualDev'
import jnpf from '@/utils/jnpf'
import Detail from '@/views/basic/dynamicModel/list/detail'
import { thousandsFormat } from "@/components/Generator/utils/index"
export default {
components: { Detail},
props: [],
data() {
return {
visible: false,
detailVisible: false,
loading: false,
import { getConfigData } from '@/api/onlineDev/visualDev'
import jnpf from '@/utils/jnpf'
import Detail from '@/views/basic/dynamicModel/list/detail'
import { thousandsFormat } from "@/components/Generator/utils/index"
export default {
components: { Detail },
props: [],
data() {
return {
visible: false,
detailVisible: false,
loading: false,
dataForm: {
id :'',
code : '',
name : '',
spec : '',
unit : "",
description : '',
creatorTime : "",
creatorUserId : "",
lastModifyTime : "",
lastModifyUserId : "",
photo : [],
id: '',
parentId: "",
code: '',
name: '',
spec: '',
unit: "",
description: '',
creatorTime: "",
creatorUserId: "",
lastModifyTime: "",
lastModifyUserId: "",
photo: [],
},
unitOptions:[{"fullName":"克","id":"1"},{"fullName":"千克","id":"2"},{"fullName":"吨","id":"3"}],
unitProps:{"label":"fullName","value":"id" },
unitOptions: [{ "fullName": "克", "id": "1" }, { "fullName": "千克", "id": "2" }, { "fullName": "吨", "id": "3" }],
unitProps: { "label": "fullName", "value": "id" },
}
},
computed: {},
watch: {},
created() {
},
computed: {},
watch: {},
created() {
},
mounted() {},
methods: {
toDetail(defaultValue, modelId) {
if (!defaultValue) return
getConfigData(modelId).then(res => {
if (!res.data || !res.data.formData) return
let formData = JSON.parse(res.data.formData)
formData.popupType = 'general'
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(formData, modelId, defaultValue)
})
},
mounted() { },
methods: {
toDetail(defaultValue, modelId) {
if (!defaultValue) return
getConfigData(modelId).then(res => {
if (!res.data || !res.data.formData) return
let formData = JSON.parse(res.data.formData)
formData.popupType = 'general'
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(formData, modelId, defaultValue)
})
},
dataInfo(dataAll){
let _dataAll =dataAll
this.dataForm = _dataAll
},
})
},
dataInfo(dataAll) {
let _dataAll = dataAll
this.dataForm = _dataAll
},
init(id) {
this.dataForm.id = id || 0;
this.visible = true;
this.$nextTick(() => {
if(this.dataForm.id){
this.loading = true
request({
url: '/api/scm/NxProduct/detail/'+this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
init(id) {
this.dataForm.id = id || 0;
this.visible = true;
this.$nextTick(() => {
if (this.dataForm.id) {
this.loading = true
request({
url: '/api/scm/NxProduct/detail/' + this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
})
},
})
},
}
},
}
</script>

@ -6,6 +6,14 @@
label-position="right">
<template v-if="!loading">
<!-- 具体表单 -->
<el-col :span="24">
<jnpf-form-tip-item label="商品父类" prop="parentId">
<JnpfTreeSelect v-model="dataForm.parentId" @change="changeData('parentId', -1)" placeholder="请选择"
clearable :style='{ "width": "100%" }' :options="parentIdOptions" :props="parentIdProps">
</JnpfTreeSelect>
</jnpf-form-tip-item>
</el-col>
<el-col :span="12">
<jnpf-form-tip-item label="编码" prop="code">
<JnpfInput v-model="dataForm.code" @change="changeData('code', -1)" placeholder="系统自动生成" readonly
@ -116,6 +124,7 @@ export default {
Vmodel: "",
currVmodel: "",
dataForm: {
parentId: undefined,
code: undefined,
name: undefined,
spec: undefined,
@ -130,6 +139,13 @@ export default {
},
tableRequiredData: {},
dataRule: {
parentId: [
{
required: true,
message: '请选择',
trigger: 'change'
},
],
name: [
{
required: true,
@ -159,6 +175,9 @@ export default {
},
],
},
parentIdOptions: [],
parentIdProps: { "label": "name", "value": "id" },
unitOptions: [
{ fullName: "克", id: "1" },
{ fullName: "千克", id: "2" },
@ -168,6 +187,7 @@ export default {
childIndex: -1,
isEdit: false,
interfaceRes: {
parentId: [],
code: [],
name: [],
spec: [],
@ -268,7 +288,34 @@ export default {
}
}
},
dataAll() { },
dataAll() {
this.getparentIdOptions();
},
getparentIdOptions() {
const index = this.childIndex
let templateJsonList = JSON.parse(JSON.stringify(this.interfaceRes.parentId))
for (let i = 0; i < templateJsonList.length; i++) {
let json = templateJsonList[i];
if (json.relationField) {
let relationFieldAll = json.relationField.split("-");
let val = json.defaultValue;
if (relationFieldAll.length > 1 && index > -1) {
val = this.dataForm[relationFieldAll[0] + 'List'] && this.dataForm[relationFieldAll[0] + 'List'].length ? this.dataForm[relationFieldAll[0] + 'List'][index][relationFieldAll[1]] : ''
} else {
val = this.dataForm[relationFieldAll]
}
json.defaultValue = val
}
}
let template = {
paramList: templateJsonList
}
getDataInterfaceRes('549855005654389765', template).then(res => {
let data = res.data
this.parentIdOptions = data
this.changeDataFormData(1, 'parentId', 'parentId', index, '')
})
},
clearData() {
this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll));
},

@ -1,10 +1,3 @@
<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
@ -12,59 +5,36 @@
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item label="编码">
<el-input v-model="query.code" placeholder="请输入" clearable>
</el-input>
<el-input v-model="query.code" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="名称">
<el-input v-model="query.name" placeholder="请输入" clearable>
</el-input>
<el-input v-model="query.name" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="规格">
<el-input v-model="query.spec" placeholder="请输入" clearable>
</el-input>
<el-input v-model="query.spec" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<template v-if="showAll">
<el-col :span="6">
<el-form-item label="库存单位">
<JnpfSelect
v-model="query.unit"
placeholder="请选择"
clearable
:options="unitOptions"
:props="unitProps"
multiple
>
<JnpfSelect v-model="query.unit" placeholder="请选择" clearable :options="unitOptions" :props="unitProps"
multiple>
</JnpfSelect>
</el-form-item>
</el-col>
</template>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"
>查询</el-button
>
<el-button icon="el-icon-refresh-right" @click="reset()"
>重置</el-button
>
<el-button
type="text"
icon="el-icon-arrow-down"
@click="showAll = true"
v-if="!showAll"
>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="text" icon="el-icon-arrow-down" @click="showAll = true" v-if="!showAll">
展开
</el-button>
<el-button
type="text"
icon="el-icon-arrow-up"
@click="showAll = false"
v-else
>
<el-button type="text" icon="el-icon-arrow-up" @click="showAll = false" v-else>
收起
</el-button>
</el-form-item>
@ -74,170 +44,99 @@
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<!-- <el-button
type="primary"
icon="icon-ym icon-ym-btn-add"
v-has="'btn_add'"
@click="addOrUpdateHandle()"
>新增
</el-button> -->
<el-button
type="primary"
icon="icon-ym icon-ym-btn-add"
@click="addOrUpdateHandle()"
>新增
<!-- <el-button type="primary" icon="icon-ym icon-ym-btn-add" @click="addOrUpdateHandle()">
</el-button> -->
<el-button type="primary" icon="icon-ym icon-ym-btn-add" @click="addOrUpdateHandle()">
</el-button>
<el-button
type="text"
icon="icon-ym icon-ym-btn-download"
@click="exportData()"
>导出
</el-button>
<el-button
type="text"
icon="icon-ym icon-ym-btn-clearn"
@click="handleBatchRemoveDel()"
>批量删除
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip content="高级查询" placement="top" v-if="true">
<el-link
icon="icon-ym icon-ym-filter JNPF-common-head-icon"
:underline="false"
@click="openSuperQuery()"
/>
<el-link icon="icon-ym icon-ym-filter JNPF-common-head-icon" :underline="false"
@click="openSuperQuery()" />
</el-tooltip>
//
<el-tooltip effect="dark" content="展开" placement="top">
<el-link v-show="!expandsTree" type="text" icon="icon-ym icon-ym-btn-expand JNPF-common-head-icon"
:underline="false" @click="toggleExpandList()" />
</el-tooltip>
<el-tooltip effect="dark" content="折叠" placement="top">
<el-link v-show="expandsTree" type="text" icon="icon-ym icon-ym-btn-collapse JNPF-common-head-icon"
:underline="false" @click="toggleExpandList()" />
</el-tooltip>
<el-tooltip
effect="dark"
:content="$t('common.refresh')"
placement="top"
>
<el-link
icon="icon-ym icon-ym-Refresh JNPF-common-head-icon"
:underline="false"
@click="initData()"
/>
<el-tooltip effect="dark" :content="$t('common.refresh')" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false" @click="initData()" />
</el-tooltip>
</div>
</div>
<JNPF-table
v-loading="listLoading"
:data="list"
@sort-change="sortChange"
has-c
@selection-change="handleSelectionChange"
:span-method="arraySpanMethod"
>
<el-table-column
prop="code"
label="编码"
align="left"
sortable="custom"
>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange' :span-method="arraySpanMethod"
row-key="id" :tree-props="{ children: 'children', hasChildren: '' }" :default-expand-all="expandsTable"
v-if="refreshTable">
<el-table-column prop="code" label="编码" align="left" sortable="custom">
</el-table-column>
<el-table-column
prop="name"
label="名称"
align="left"
sortable="custom"
>
<el-table-column prop="name" label="名称" align="left" sortable="custom">
</el-table-column>
<el-table-column
prop="spec"
label="规格"
align="left"
sortable="custom"
>
<el-table-column prop="spec" label="规格" align="left" sortable="custom">
</el-table-column>
<el-table-column
label="库存单位"
prop="unit"
algin="left"
sortable="custom"
>
<el-table-column label="库存单位" prop="unit" algin="left" sortable="custom">
<template slot-scope="scope">
{{ scope.row.unit }}
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="150">
<template slot-scope="scope">
<el-button type="text" @click="addOrUpdateHandle(scope.row)"
>编辑
<el-button type="text" @click="addOrUpdateHandle(scope.row)">
</el-button>
<el-button
type="text"
class="JNPF-table-delBtn"
@click="handleDel(scope.row.id)"
>删除
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
</el-button>
<el-button type="text" @click="goDetail(scope.row.id)"
>详情
<el-button type="text" @click="goDetail(scope.row.id)">
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination
:total="total"
:page.sync="listQuery.currentPage"
:limit.sync="listQuery.pageSize"
@pagination="initData"
/>
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh" />
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
<ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
<Detail
v-if="detailVisible"
ref="Detail"
@refresh="detailVisible = false"
/>
<ToFormDetail
v-if="toFormDetailVisible"
ref="toFormDetail"
@close="toFormDetailVisible = false"
/>
<SuperQuery
v-if="superQueryVisible"
ref="SuperQuery"
:columnOptions="superQueryJson"
@superQuery="superQuery"
/>
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible = false" />
<ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail" @close="toFormDetailVisible = false" />
<SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson" @superQuery="superQuery" />
</div>
</template>
<script>
import request from "@/utils/request";
import request from '@/utils/request'
import { mapGetters } from "vuex";
import { getDictionaryDataSelector } from "@/api/systemData/dictionary";
import JNPFForm from "./form";
import Detail from "./Detail";
import ExportBox from "@/components/ExportBox";
import ToFormDetail from "@/views/basic/dynamicModel/list/detail";
import { getDataInterfaceRes } from "@/api/systemData/dataInterface";
import { getConfigData } from "@/api/onlineDev/visualDev";
import { getDefaultCurrentValueUserIdAsync } from "@/api/permission/user";
import { getDefaultCurrentValueDepartmentIdAsync } from "@/api/permission/organize";
import columnList from "./columnList";
import { thousandsFormat } from "@/components/Generator/utils/index";
import SuperQuery from "@/components/SuperQuery";
import superQueryJson from "./superQueryJson";
import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
import JNPFForm from './form'
import Detail from './Detail'
import ExportBox from '@/components/ExportBox'
import ToFormDetail from '@/views/basic/dynamicModel/list/detail'
import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import { getConfigData } from '@/api/onlineDev/visualDev'
import { getDefaultCurrentValueUserIdAsync } from '@/api/permission/user'
import { getDefaultCurrentValueDepartmentIdAsync } from '@/api/permission/organize'
import columnList from './columnList'
import { thousandsFormat } from "@/components/Generator/utils/index"
import SuperQuery from '@/components/SuperQuery'
import superQueryJson from './superQueryJson'
export default {
components: {
JNPFForm,
Detail,
ExportBox,
ToFormDetail,
SuperQuery,
ExportBox, ToFormDetail, SuperQuery
},
data() {
return {
keyword: "",
keyword: '',
expandsTree: true,
refreshTree: true,
toFormDetailVisible: false,
@ -246,6 +145,9 @@ export default {
mergeList: [],
exportList: [],
columnList,
expandsTable: true,
refreshTable: true,
expandsTree: true,
showAll: false,
superQueryVisible: false,
@ -259,20 +161,16 @@ export default {
unit: undefined,
},
treeProps: {
children: "children",
label: "fullName",
value: "id",
isLeaf: "isLeaf",
children: 'children',
label: 'fullName',
value: 'id',
isLeaf: 'isLeaf'
},
list: [],
listLoading: true,
multipleSelection: [],
total: 0,
queryData: {},
listQuery: {
superQueryJson: "",
currentPage: 1,
pageSize: 20,
superQueryJson: '',
sort: "desc",
sidx: "",
},
@ -281,339 +179,304 @@ export default {
flowListVisible: false,
flowList: [],
exportBoxVisible: false,
unitOptions: [
{ fullName: "克", id: "1" },
{ fullName: "千克", id: "2" },
{ fullName: "吨", id: "3" },
],
unitProps: { label: "fullName", value: "id" },
interfaceRes: {},
};
parentIdOptions: [],
parentIdProps: { "label": "name", "value": "id" },
unitOptions: [{ "fullName": "克", "id": "1" }, { "fullName": "千克", "id": "2" }, { "fullName": "吨", "id": "3" }],
unitProps: { "label": "fullName", "value": "id" },
interfaceRes: {
},
}
},
computed: {
...mapGetters(["userInfo"]),
...mapGetters(['userInfo']),
menuId() {
return this.$route.meta.modelId || "";
},
return this.$route.meta.modelId || ''
}
},
created() {
this.getColumnList(), this.initSearchDataAndListData();
this.queryData = JSON.parse(JSON.stringify(this.query));
this.getColumnList(),
this.initSearchDataAndListData()
this.queryData = JSON.parse(JSON.stringify(this.query))
},
methods: {
toDetail(defaultValue, modelId) {
if (!defaultValue) return;
getConfigData(modelId).then((res) => {
if (!res.data || !res.data.formData) return;
let formData = JSON.parse(res.data.formData);
formData.popupType = "general";
this.toFormDetailVisible = true;
if (!defaultValue) return
getConfigData(modelId).then(res => {
if (!res.data || !res.data.formData) return
let formData = JSON.parse(res.data.formData)
formData.popupType = 'general'
this.toFormDetailVisible = true
this.$nextTick(() => {
this.$refs.toFormDetail.init(formData, modelId, defaultValue);
});
});
this.$refs.toFormDetail.init(formData, modelId, defaultValue)
})
})
},
toggleTreeExpand(expands) {
this.refreshTree = false;
this.expandsTree = expands;
this.refreshTree = false
this.expandsTree = expands
this.$nextTick(() => {
this.refreshTree = true;
this.refreshTree = true
this.$nextTick(() => {
this.$refs.treeBox.setCurrentKey(null);
});
});
this.$refs.treeBox.setCurrentKey(null)
})
})
},
filterNode(value, data) {
if (!value) return true;
return data[this.treeProps.label].indexOf(value) !== -1;
},
loadNode(node, resolve) {
const nodeData = node.data;
const nodeData = node.data
const config = {
treeInterfaceId: "",
treeTemplateJson: [],
};
treeTemplateJson: []
}
if (config.treeInterfaceId) {
//
if (config.treeTemplateJson && config.treeTemplateJson.length) {
for (let i = 0; i < config.treeTemplateJson.length; i++) {
const element = config.treeTemplateJson[i];
element.defaultValue = nodeData[element.relationField] || "";
element.defaultValue = nodeData[element.relationField] || ''
}
}
//
let query = {
paramList: config.treeTemplateJson || [],
};
}
//
getDataInterfaceRes(config.treeInterfaceId, query).then((res) => {
let data = res.data;
getDataInterfaceRes(config.treeInterfaceId, query).then(res => {
let data = res.data
if (Array.isArray(data)) {
resolve(data);
} else {
resolve([]);
}
});
})
}
},
getColumnList() {
//
this.columnOptions = this.transformColumnList(this.columnList);
this.columnOptions = this.transformColumnList(this.columnList)
},
transformColumnList(columnList) {
let list = [];
let list = []
for (let i = 0; i < columnList.length; i++) {
const e = columnList[i];
if (!e.prop.includes("-")) {
list.push(e);
if (!e.prop.includes('-')) {
list.push(e)
} else {
let prop = e.prop.split("-")[0];
let label = e.label.split("-")[0];
let vModel = e.prop.split("-")[1];
let prop = e.prop.split('-')[0]
let label = e.label.split('-')[0]
let vModel = e.prop.split('-')[1]
let newItem = {
align: "center",
jnpfKey: "table",
prop,
label,
children: [],
};
e.vModel = vModel;
if (!this.expandObj.hasOwnProperty(`${prop}Expand`))
this.$set(this.expandObj, `${prop}Expand`, false);
if (!list.some((o) => o.prop === prop)) list.push(newItem);
children: []
}
e.vModel = vModel
if (!this.expandObj.hasOwnProperty(`${prop}Expand`)) this.$set(this.expandObj, `${prop}Expand`, false)
if (!list.some(o => o.prop === prop)) list.push(newItem)
for (let i = 0; i < list.length; i++) {
if (list[i].prop === prop) {
list[i].children.push(e);
break;
list[i].children.push(e)
break
}
}
}
}
this.getMergeList(list);
this.getExportList(list);
return list;
this.getMergeList(list)
this.getExportList(list)
return list
},
arraySpanMethod({ column }) {
for (let i = 0; i < this.mergeList.length; i++) {
if (column.property == this.mergeList[i].prop) {
return [this.mergeList[i].rowspan, this.mergeList[i].colspan];
return [this.mergeList[i].rowspan, this.mergeList[i].colspan]
}
}
},
getMergeList(list) {
let newList = JSON.parse(JSON.stringify(list));
newList.forEach((item) => {
let newList = JSON.parse(JSON.stringify(list))
newList.forEach(item => {
if (item.children && item.children.length) {
let child = {
prop: item.prop + "-child-first",
};
item.children.unshift(child);
prop: item.prop + '-child-first'
}
item.children.unshift(child)
}
});
newList.forEach((item) => {
})
newList.forEach(item => {
if (item.children && item.children.length) {
item.children.forEach((child, index) => {
if (index == 0) {
this.mergeList.push({
prop: child.prop,
rowspan: 1,
colspan: item.children.length,
});
colspan: item.children.length
})
} else {
this.mergeList.push({
prop: child.prop,
rowspan: 0,
colspan: 0,
});
colspan: 0
})
}
});
})
} else {
this.mergeList.push({
prop: item.prop,
rowspan: 1,
colspan: 1,
});
colspan: 1
})
}
});
})
},
getExportList(list) {
let exportList = [];
let exportList = []
for (let i = 0; i < list.length; i++) {
if (list[i].jnpfKey === "table") {
if (list[i].jnpfKey === 'table') {
for (let j = 0; j < list[i].children.length; j++) {
exportList.push(list[i].children[j]);
exportList.push(list[i].children[j])
}
} else {
exportList.push(list[i]);
exportList.push(list[i])
}
}
this.exportList = exportList;
this.exportList = exportList
},
goDetail(id) {
this.detailVisible = true;
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id);
});
this.$refs.Detail.init(id)
})
},
sortChange({ column, prop, order }) {
this.listQuery.sort = order == "ascending" ? "asc" : "desc";
this.listQuery.sidx = !order ? "" : prop;
this.initData();
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
async initSearchDataAndListData() {
await this.initSearchData();
this.initData();
await this.initSearchData()
this.initData()
},
//
async initSearchData() {},
async initSearchData() {
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
keyword: this.keyword,
dataType: 0,
dataType: 1,
menuId: this.menuId,
// moduleId:'534635503241163013',
// moduleId: "539722863561674629",
// moduleId: '534635503241163013',
type: 1,
// type: 5,
};
request({
url: `/api/scm/NxProduct/getList`,
method: "post",
data: _query,
}).then((res) => {
method: 'post',
data: _query
}).then(res => {
var _list = res.data.list;
this.list = _list.map((o) => ({
this.list = _list.map(o => ({
...o,
...this.expandObj,
}));
this.total = res.data.pagination.total;
this.listLoading = false;
});
}))
this.listLoading = false
})
},
handleDel(id) {
this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
type: "warning",
})
.then(() => {
request({
url: `/api/scm/NxProduct/${id}`,
method: "DELETE",
}).then((res) => {
this.$message({
type: "success",
message: res.msg,
onClose: () => {
this.initData();
},
});
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/scm/NxProduct/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
.catch(() => {});
}).catch(() => {
});
},
handelUpload() {
this.uploadBoxVisible = true;
this.uploadBoxVisible = true
this.$nextTick(() => {
this.$refs.UploadBox.init("", "scm/NxProduct");
});
},
handleSelectionChange(val) {
const res = val.map((item) => item.id);
this.multipleSelection = res;
},
handleBatchRemoveDel() {
if (!this.multipleSelection.length) {
this.$message({
type: "error",
message: "请选择一条数据",
duration: 1500,
});
return;
}
const ids = this.multipleSelection;
this.$confirm("您确定要删除这些数据吗, 是否继续?", "提示", {
type: "warning",
this.$refs.UploadBox.init("", "scm/NxProduct")
})
.then(() => {
request({
url: `/api/scm/NxProduct/batchRemove`,
data: ids,
method: "DELETE",
}).then((res) => {
this.$message({
type: "success",
message: res.msg,
onClose: () => {
this.initData();
},
});
});
})
.catch(() => {});
},
openSuperQuery() {
this.superQueryVisible = true;
this.superQueryVisible = true
this.$nextTick(() => {
this.$refs.SuperQuery.init();
});
this.$refs.SuperQuery.init()
})
},
superQuery(queryJson) {
this.listQuery.superQueryJson = queryJson;
this.listQuery.currentPage = 1;
this.initData();
this.listQuery.superQueryJson = queryJson
this.listQuery.currentPage = 1
this.initData()
},
addOrUpdateHandle(row, isDetail) {
let id = row ? row.id : "";
this.formVisible = true;
let id = row ? row.id : ""
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail, this.list);
});
this.$refs.JNPFForm.init(id, isDetail, this.list)
})
},
exportData() {
this.exportBoxVisible = true;
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.exportList);
});
this.$refs.ExportBox.init(this.exportList)
})
},
download(data) {
let query = {
...data,
...this.listQuery,
...this.query,
menuId: this.menuId,
};
let query = { ...data, ...this.listQuery, ...this.query, menuId: this.menuId }
request({
url: `/api/scm/NxProduct/Actions/Export`,
method: "post",
data: query,
}).then((res) => {
if (!res.data.url) return;
this.jnpf.downloadFile(res.data.url);
this.$refs.ExportBox.visible = false;
this.exportBoxVisible = false;
});
method: 'post',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery.currentPage = 1;
this.listQuery.pageSize = 20;
this.listQuery.sort = "desc";
this.listQuery.sidx = "";
this.initData();
this.listQuery.sort = "desc"
this.listQuery.sidx = ""
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false;
if (isrRefresh) this.reset();
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
this.query = JSON.parse(JSON.stringify(this.queryData));
this.search();
this.query = JSON.parse(JSON.stringify(this.queryData))
this.search()
},
colseFlow(isrRefresh) {
this.flowVisible = false;
if (isrRefresh) this.reset();
this.flowVisible = false
if (isrRefresh) this.reset()
},
},
};
//
toggleExpandList() {
this.refreshTable = false;
this.expandsTree = !this.expandsTree;
this.expandsTable = !this.expandsTable;
this.$nextTick(() => {
this.refreshTable = true;
});
},
}
}
</script>

File diff suppressed because one or more lines are too long

@ -2,12 +2,11 @@
<transition name="el-zoom-in-center">
<div class="JNPF-preview-main user-form">
<div class="JNPF-common-page-header">
<el-page-header @back="goBack"
:content="!dataForm.id ?$t(`user.addUser`) : $t(`user.editUser`)" />
<el-page-header @back="goBack" :content="!dataForm.id ? $t(`user.addUser`) : $t(`user.editUser`)" />
<div class="options">
<el-button type="primary" :loading="btnLoading" @click="handleConfirm()">
{{$t('common.confirmButton')}}</el-button>
<el-button @click="goBack">{{$t('common.cancelButton')}} </el-button>
{{ $t('common.confirmButton') }}</el-button>
<el-button @click="goBack">{{ $t('common.cancelButton') }} </el-button>
</div>
</div>
<div class="main" v-loading="formLoading">
@ -33,8 +32,8 @@
<el-col :sm="12" :xs="24">
<el-form-item label="性别" prop="gender">
<el-select v-model="dataForm.gender" placeholder="选择性别">
<el-option v-for="item in genderTreeData" :key="item.enCode"
:label="item.fullName" :value="item.enCode" />
<el-option v-for="item in genderTreeData" :key="item.enCode" :label="item.fullName"
:value="item.enCode" />
</el-select>
</el-form-item>
</el-col>
@ -59,9 +58,9 @@
<el-select v-model="positionId" placeholder="选择岗位" @change="onChange('positionId')"
@visible-change="visibleChange" multiple filterable clearable>
<el-option-group v-for="group in positionTreeData" :key="group.id"
:label="group.fullName+(group.num?'【'+group.num+'】':'')">
<el-option v-for="item in group.children" :key="group.id+item.id"
:label="item.fullName" :value="item.id">
:label="group.fullName + (group.num ? '【' + group.num + '】' : '')">
<el-option v-for="item in group.children" :key="group.id + item.id" :label="item.fullName"
:value="item.id">
</el-option>
</el-option-group>
</el-select>
@ -72,9 +71,9 @@
<el-select v-model="roleId" placeholder="选择角色" @change="onChange('roleId')"
@visible-change="visibleChange" multiple filterable clearable>
<el-option-group v-for="group in roleTreeData" :key="group.id"
:label="group.fullName+(group.num?'【'+group.num+'】':'')">
<el-option v-for="item in group.children" :key="group.id+item.id"
:label="item.fullName" :value="item.id">
:label="group.fullName + (group.num ? '【' + group.num + '】' : '')">
<el-option v-for="item in group.children" :key="group.id + item.id" :label="item.fullName"
:value="item.id">
</el-option>
</el-option-group>
</el-select>
@ -82,8 +81,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="排序" prop="sortCode">
<el-input-number :min="0" :max="999999" v-model="dataForm.sortCode"
controls-position="right" />
<el-input-number :min="0" :max="999999" v-model="dataForm.sortCode" controls-position="right" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -107,20 +105,23 @@
<el-row :gutter="20" class="custom-row">
<el-col :span="24">
<el-form-item label="头像" prop="headIcon">
<el-upload class="avatar-uploader" :headers="uploadHeaders"
:action="define.comUploadUrl+'/userAvatar'" :show-file-list="false"
<!-- <el-upload class="avatar-uploader" :headers="uploadHeaders"
:action="define.UPLOAD_DOMAIN + '/uploadImg'" :show-file-list="false"
:on-success="handleAvatarSuccess" accept="image/*">
<img v-if="dataForm.headIcon" :src="define.comUrl+dataForm.headIcon"
class="avatar">
<img v-if="dataForm.headIcon" :src="define.UPLOAD_DOMAIN + dataForm.headIcon" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon" />
</el-upload>
</el-upload> -->
<jnpf-form-tip-item label="图片" prop="headIcon">
<JnpfUploadImg v-model="dataForm.headIcon" @change="changeData('photo', -1)" :fileSize="10"
sizeUnit="MB" :limit="1" pathType="defaultPath" :isAccount="0">
</JnpfUploadImg>
</jnpf-form-tip-item>
</el-form-item>
</el-col>
<el-col :sm="12" :xs="24">
<el-form-item label="民族" prop="nation">
<el-select v-model="dataForm.nation" placeholder="选择民族" filterable>
<el-option v-for="item in nationTreeData" :key="item.id" :label="item.fullName"
:value="item.id" />
<el-option v-for="item in nationTreeData" :key="item.id" :label="item.fullName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
@ -132,15 +133,14 @@
<el-col :sm="12" :xs="24">
<el-form-item label="证件类型" prop="certificatesType">
<el-select v-model="dataForm.certificatesType" placeholder="选择证件类型" filterable>
<el-option v-for="item in certificatesTypeTreeData" :key="item.id"
:label="item.fullName" :value="item.id" />
<el-option v-for="item in certificatesTypeTreeData" :key="item.id" :label="item.fullName"
:value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :sm="12" :xs="24">
<el-form-item label="入职时间" prop="entryDate">
<el-date-picker v-model="dataForm.entryDate" type="date" placeholder="选择入职时间"
value-format="timestamp">
<el-date-picker v-model="dataForm.entryDate" type="date" placeholder="选择入职时间" value-format="timestamp">
</el-date-picker>
</el-form-item>
</el-col>
@ -152,15 +152,13 @@
<el-col :sm="12" :xs="24">
<el-form-item label="文化程度" prop="education">
<el-select v-model="dataForm.education" placeholder="选择文化程度">
<el-option v-for="item in educationTreeData" :key="item.id" :label="item.fullName"
:value="item.id" />
<el-option v-for="item in educationTreeData" :key="item.id" :label="item.fullName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :sm="12" :xs="24">
<el-form-item label="出生年月" prop="birthday">
<el-date-picker v-model="dataForm.birthday" type="date" placeholder="选择出生年月"
value-format="timestamp">
<el-date-picker v-model="dataForm.birthday" type="date" placeholder="选择出生年月" value-format="timestamp">
</el-date-picker>
</el-form-item>
</el-col>
@ -397,12 +395,14 @@ export default {
.main {
padding: 10px 30px 0;
}
>>> .el-select,
>>> .el-cascader,
>>> .el-date-editor {
>>>.el-select,
>>>.el-cascader,
>>>.el-date-editor {
width: 100%;
}
>>> .avatar-uploader {
>>>.avatar-uploader {
.el-upload {
border: 1px dashed #dcdfe6;
border-radius: 6px;
@ -410,10 +410,12 @@ export default {
position: relative;
overflow: hidden;
}
.el-upload:hover {
border-color: #409eff;
}
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
@ -422,6 +424,7 @@ export default {
line-height: 130px;
text-align: center;
}
.avatar {
width: 130px;
height: 130px;

Loading…
Cancel
Save