123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- <template>
- <div class="data-filter-wrap">
- <el-button
- type="primary"
- class="inline-large-button mb10"
- icon="el-icon-plus"
- size="mini"
- @click="addCondition"
- >
- 添加按钮
- </el-button>
- <el-table :data="tableData" style="width: 100%">
- <!-- <el-table-column align="center" label="序号" type="index" width="50">
- </el-table-column> -->
- <el-table-column align="center" prop="conditionNotes" label="按钮名称">
- <template slot-scope="scope">
- <el-input
- v-model="scope.row.conditionNotes"
- size="normal"
- clearable
- ></el-input>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- prop="conditionField"
- label="条件字段"
- width="100"
- >
- <template slot-scope="scope">
- <el-select
- v-model="scope.row.conditionField"
- placeholder="请选择条件字段"
- clearable
- filterable
- >
- <el-option
- v-for="item in fieldList"
- :key="item.fieldName"
- :label="item.fieldDescription"
- :value="item.tableName + '.' + item.fieldName"
- >
- <span class="discribe" style="float: left">{{
- item.fieldDescription
- }}</span>
- <span style="float: right; color: #8492a6; font-size: 13px">{{
- item.fieldName
- }}</span>
- </el-option>
- </el-select>
- </template>
- </el-table-column>
- <!-- <el-table-column align="center" prop="condition" label="条件">
- <template slot-scope="scope">
- <el-select v-model="scope.row.condition" placeholder="请选择">
- <el-option
- v-for="item in conditionList"
- :key="item.label"
- :label="item.label"
- :value="item.label"
- >
- </el-option>
- </el-select>
- </template>
- </el-table-column> -->
- <!-- <el-table-column align="center" prop="conditionType" label="类型">
- <template slot-scope="scope">
- <el-select v-model="scope.row.conditionType" clearable filterable>
- <el-option
- v-for="item in conditionTypeOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </template>
- </el-table-column> -->
- <el-table-column align="center" prop="componentType" label="按钮类型">
- <template slot-scope="scope">
- <el-select v-model="scope.row.componentType" clearable filterable>
- <el-option
- v-for="item in componentTypeOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column align="center" prop="componentSize" label="按钮尺寸">
- <template slot-scope="scope">
- <el-select v-model="scope.row.componentSize" clearable filterable>
- <el-option
- v-for="item in componentSizeOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column align="center" prop="componentIcon" label="按钮图标">
- <template slot-scope="scope">
- <el-popover
- placement="bottom-start"
- width="460"
- trigger="click"
- @show="$refs['iconSelect'].reset()"
- >
- <IconSelect
- ref="iconSelect"
- @selected="
- (name) => {
- selected(name, scope.row);
- }
- "
- :active-icon="scope.row.componentIcon"
- />
- <el-input
- slot="reference"
- v-model="scope.row.componentIcon"
- placeholder="点击选择图标"
- readonly
- >
- <svg-icon
- v-if="scope.row.componentIcon"
- slot="prefix"
- :icon-class="scope.row.componentIcon"
- style="width: 25px"
- />
- <i v-else slot="prefix" class="el-icon-search el-input__icon" />
- </el-input>
- </el-popover>
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- prop="conditionDefaultValue"
- label="按钮值"
- >
- <template slot-scope="scope">
- <el-input v-model="scope.row.conditionDefaultValue"></el-input>
- </template>
- </el-table-column>
- <el-table-column align="center" prop="sort" label="排序">
- <template slot-scope="scope">
- <el-input v-model="scope.row.sort"></el-input>
- </template>
- </el-table-column>
- <el-table-column label="操作">
- <template slot-scope="scope">
- <el-button
- size="mini"
- type="text"
- icon="el-icon-delete"
- @click="delHandler(scope.$index)"
- >删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </template>
- <script>
- import IconSelect from "@/components/IconSelect";
- export default {
- name: "ClassificationQueryPanel",
- props: ["tableFieldList", "classificationDataEcho"],
- components: { IconSelect },
- data() {
- return {
- tableData: [],
- fieldList: [],
- conditionList: [
- {
- value: 1,
- label: ">",
- },
- {
- value: 2,
- label: "<",
- },
- {
- value: 3,
- label: "=",
- },
- {
- value: 4,
- label: ">=",
- },
- {
- value: 5,
- label: "<=",
- },
- ],
- conditionTypeOptions: [
- {
- label: "按钮",
- value: "button",
- },
- ],
- componentTypeOptions: [
- {
- value: "primary",
- label: "primary",
- },
- {
- value: "success",
- label: "success",
- },
- {
- value: "warning",
- label: "warning",
- },
- {
- value: "danger",
- label: "danger",
- },
- {
- value: "info",
- label: "info",
- },
- {
- value: "text",
- label: "text",
- },
- ],
- componentSizeOptions: [
- { value: "small", label: "small" },
- { value: "default", label: "default" },
- { value: "large", label: "large" },
- ],
- };
- },
- watch: {
- myTableFieldList: {
- handler(nval) {
- this.fieldList = nval;
- console.log(this.fieldList);
- // 初始化删除逻辑条件
- // let is_has_del_flag = nval.find((item) => {
- // return item.fieldName == "del_flag";
- // });
- // console.log(is_has_del_flag);
- // if (is_has_del_flag) {
- // let { fieldName, tableName } = is_has_del_flag;
- // this.tableData = [];
- // this.tableData.push({
- // fieldName: tableName + "." + fieldName,
- // condition: "=",
- // refValue: 0,
- // });
- // } else {
- // this.tableData = [];
- // }
- },
- deep: true,
- immediate: true,
- },
- myFilterDataEcho: {
- handler(val) {
- if (val) {
- console.log(val);
- this.tableData = val;
- }
- },
- deep: true,
- immediate: true,
- },
- },
- computed: {
- myTableFieldList() {
- console.log(this.tableFieldList);
- return this.tableFieldList;
- },
- myFilterDataEcho() {
- return this.classificationDataEcho;
- },
- },
- methods: {
- // 选择图标
- selected(name, row) {
- console.log(name, row);
- row.componentIcon = name;
- // this.btnGroupFormData.btnIcon = name;
- },
- // 新增条件回调
- addCondition() {
- this.tableData.push({
- conditionNotes: "", //按钮名称
- conditionName: "",
- conditionField: "", //条件字段
- // condition: "",
- conditionType: "button", //类型
- conditionDefaultValue: "", //按钮值
- sort: "", //排序
- componentType: "", //按钮类型
- componentsSize: "", //按钮大小
- componentIcon: "", //按钮图标
- });
- },
- // 编辑条件回调
- editHandler() {},
- // 删除条件回调
- delHandler(index) {
- this.tableData.splice(index, 1);
- },
- // 获取数据筛选条件
- getConditions() {
- return this.tableData;
- },
- // 获取回显数据
- getEchoData() {
- return JSON.stringify(this.tableData);
- },
- },
- mounted() {},
- };
- </script>
- <style scoped lang="scss">
- .discribe {
- display: block;
- max-width: 200px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- </style>
|