<template>
|
<div class="page-list-container">
|
<!--数据Table-->
|
<yrt-data-list :ref="dataListRef" :editor-ref="editorRef" :data-options="dataOptions" :fields.sync="dataListOptions.fields" :buttons="dataListOptions.buttons" :button-click="buttonClick" :data-list-selections.sync="dataListSelections" :auth-nodes="authNodes">
|
<template slot="common-column-slot" slot-scope="{row, col}">
|
<template v-if="col.prop=='enable'">
|
<template v-if="row[col.prop]==1">
|
<el-tag color="#7aaffe" style="color:white;border:0">
|
{{ $refs[dataListRef].translateText(col.prop, row[col.prop], col.dropdown_Id) }}
|
</el-tag>
|
</template>
|
<template v-else>
|
<el-tag color="#ffcc33" style="color:white;border:0">
|
{{ $refs[dataListRef].translateText(col.prop, row[col.prop]||0, col.dropdown_Id) }}
|
</el-tag>
|
</template>
|
</template>
|
<template v-else-if="col.prop==dataOptions.linkColumn">
|
<el-link type="primary" @click.native="()=>{linkEditor(row[dataOptions.idField]);}">{{ row[col.prop] }}</el-link>
|
</template>
|
<template v-else>
|
<template v-if="['date', 'datetime'].indexOf(col.dataType)>=0 && col.formatter">
|
{{ common.formatDate(row[col.prop], col.formatter) }}
|
</template>
|
<template v-else-if="['byte', 'int32', 'int64', 'decimal', 'double'].indexOf(col.dataType)>=0 && col.formatter">
|
{{ common.formatNumber(row[col.prop], col.formatter) }}
|
</template>
|
<template v-else>
|
{{ row[col.prop] }}
|
</template>
|
</template>
|
</template>
|
</yrt-data-list>
|
|
<!--数据编辑器Editor-->
|
<yrt-editor :ref="editorRef" :data-list-ref="dataListRef" v-bind="editorOptions" :data-options="dataOptions" :action.sync="editorOptions.action" :top.sync="editorOptions.top" :visible.sync="editorOptions.config.visible" :auth-nodes="authNodes" :on-save-before="onSaveBefore" @on-change="onChange" @on-add-load-after="onAddLoadAfter" @on-edit-load-after="onEditLoadAfter">
|
<div slot="blank-wayBillRule">
|
<el-input v-model="beginRule" :maxlength="4" placeholder="自定义字符" class="custom-letter w-80" @change="generateCode"></el-input>
|
<!-- <el-input v-model="wayBillRule" placeholder="PC[yyyy][MM][dd][3]" style="width:200px;"></el-input> -->
|
<!-- <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
|
<el-checkbox v-for="city in cities" :label="city" :key="city">{{ city }}</el-checkbox>
|
</el-checkbox-group> -->
|
<span>[yy]</span>
|
<el-select v-model="wayBillRuleSerial" placeholder="请选择位数" class="w-80" @change="generateCode">
|
<!-- <el-option :label="'2'" :value="2">
|
</el-option>
|
<el-option :label="'3'" :value="3">
|
</el-option> -->
|
<el-option :label="'4'" :value="4">
|
</el-option>
|
<el-option :label="'5'" :value="5">
|
</el-option>
|
</el-select>
|
</div>
|
|
<!--自定义按钮插槽-->
|
<template slot="footer-button-region" slot-scope="{ formData }">
|
<!--自定义审核按钮-->
|
<el-button type="success" icon="el-icon-yrt-qiyong" @click.native="UpdatePassword(formData)">修改密码</el-button>
|
<el-button type="default" icon="el-icon-yrt-icon21" @click.native="updateToken(formData)">生成Token</el-button>
|
</template>
|
</yrt-editor>
|
|
<el-dialog :visible.sync="dialogPassword" title="更改密码" width="500px">
|
<el-form :label-width="formLabelWidth">
|
<!-- <el-form-item label="旧密码">
|
<el-input v-model="oldPwd" type="text" placeholder="请输入密码"></el-input>
|
</el-form-item> -->
|
<el-form-item label="密码">
|
<el-input v-model="newPassword" type="text" placeholder="请输入密码"></el-input>
|
</el-form-item>
|
<el-form-item label="确认密码">
|
<el-input v-model="repeatPassWord" type="text" placeholder="请确认密码"></el-input>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="dialogPassword=false">取 消</el-button>
|
<el-button type="primary" @click="updateExpress(2)">确 定</el-button>
|
</div>
|
</el-dialog>
|
|
<!-- 批量导入 -->
|
<import-dialog :visible.sync="importConfig.isShowDialog" :import-config="importConfig"></import-dialog>
|
</div>
|
</template>
|
|
<script>
|
import baseLayout from "@/components/common/base-layout.vue";
|
import ImportDialog from "@/components/common/components/import-common-dialog";
|
const cityOptions = ["[yyyy][MM][dd]"];
|
|
export default {
|
name: "sys-basic-consignor",
|
components: { ImportDialog },
|
mixins: [baseLayout],
|
data() {
|
return {
|
dialogPassword: false,
|
formLabelWidth: "130px",
|
wayBillRule: null, // 运单规则
|
beginRule: null, // 开头规则
|
checkedCities: [],
|
cities: cityOptions,
|
wayBillRuleSerial: null, // 流水号
|
oldPwd: "",
|
newPassword: "",
|
repeatPassWord: "",
|
|
// 导入对话框参数
|
importConfig: {
|
// 显示导入对话框
|
isShowDialog: false,
|
title: "货主批量导入",
|
// 导入地址
|
url: "/api/basicInfo/base/consignor/importExcel",
|
// 模板地址
|
templateUrl: "https://auod-beijing.oss-cn-beijing.aliyuncs.com/node-wms/template/货主导入模板.xlsx"
|
}
|
};
|
},
|
methods: {
|
// 保存前事件
|
onSaveBefore() {
|
this.generateCode();
|
},
|
// 编码规则
|
generateCode() {
|
var editorRef = this.editor;
|
if (!this.beginRule) {
|
// this.$message.error("请设置自定义字符");
|
return false;
|
}
|
if (!this.wayBillRuleSerial) {
|
// this.$message.error("请选择流水号");
|
return false;
|
}
|
const val =
|
this.beginRule +
|
"[yy]" +
|
"[" +
|
this.wayBillRuleSerial
|
.toString()
|
.replace("[", "")
|
.replace("]", "") +
|
"]";
|
this.$set(editorRef.formData, "wayBillRule", val);
|
},
|
// 编辑前事件
|
onEditLoadAfter(formData) {
|
// 加载市
|
this.loadChildrenNode(formData.province_Id, 614, "provinceName");
|
// 加载市
|
this.loadChildrenNode(formData.city_Id, 615, "cityName");
|
if (formData.wayBillRule) {
|
if (formData.wayBillRule.split("[yy]").length > 1) {
|
this.beginRule = formData.wayBillRule.split("[yy]")[0];
|
this.wayBillRuleSerial = formData.wayBillRule
|
.split("[yy]")[1]
|
.toString()
|
.replace("[", "")
|
.replace("]", "");
|
} else {
|
this.beginRule = formData.wayBillRule.split("[yyyy][MM][dd]")[0];
|
this.wayBillRuleSerial = formData.wayBillRule
|
.split("[yy][MM][dd]")[1]
|
.toString()
|
.replace("[", "")
|
.replace("]", "");
|
}
|
}
|
},
|
onAddLoadAfter() {
|
this.beginRule = null;
|
this.wayBillRuleSerial = null;
|
},
|
// 级联改变数据
|
onChange(ref, val, field) {
|
const formData = this.editor.formData;
|
// 记录ID和Name
|
if (field.options.prop === "provinceName") {
|
this.$set(formData, "city_Id", null);
|
this.$set(formData, "cityName", null);
|
// 设置表单数据
|
const item = ref.getOption(val);
|
// 改变市级下拉框
|
this.loadChildrenNode(item.value, 614, field.options.prop);
|
} else if (field.options.prop === "cityName") {
|
this.$set(formData, "region_Id", null);
|
this.$set(formData, "regionName", null);
|
// 设置表单数据
|
const item = ref.getOption(val);
|
// 改变区级下拉框
|
this.loadChildrenNode(item.value, 615, field.options.prop);
|
}
|
},
|
// 根据省ID获得市
|
loadChildrenNode(id, dropdown_Id, prop) {
|
var editorRef = this.editor;
|
|
var where = { parentId: id };
|
var url = "/api/common/loadTreeNode";
|
var params = {
|
openNodeApi: true,
|
folder: "basicInfo/base",
|
DBServer: "Sys",
|
tableName: "Base_City",
|
tableView: "Base_City",
|
keyName: "city_Id",
|
nodeName: "cityName",
|
fixHasChild: false,
|
isBreakWay: false,
|
displayBreakWay: false,
|
parentName: "parentId",
|
orderBy: "orderNo desc, city_Id",
|
where: where,
|
extendColumns: ""
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
if (res.result) {
|
var data = res.data.map(item => {
|
if (prop === "provinceName") {
|
const newItem = {
|
city_Id: item.value,
|
cityName: item.label,
|
value: item.value,
|
label: item.label
|
};
|
return newItem;
|
} else if (prop === "cityName") {
|
const newItem = {
|
region_Id: item.value,
|
regionName: item.label,
|
value: item.value,
|
label: item.label
|
};
|
return newItem;
|
}
|
});
|
editorRef.setDropdownData(dropdown_Id, data);
|
} else {
|
this.$message.error(res.msg);
|
}
|
},
|
true
|
);
|
},
|
// 显示密码修改弹出框
|
UpdatePassword() {
|
// 弹出框
|
this.dialogPassword = true;
|
},
|
// 自定义修改密码
|
updateExpress(formData) {
|
const consignor_Id = this.editor.formData["consignor_Id"];
|
if (this.newPassword !== this.repeatPassWord) {
|
this.$message({
|
message: "两次密码不一致!",
|
type: "warning"
|
});
|
return;
|
}
|
const url = "/api/sys/user/consignorModifyPwd";
|
const params = {
|
consignor_Id: consignor_Id,
|
oldPwd: this.oldPwd,
|
userPwd: this.newPassword,
|
repeatPassWord: this.repeatPassWord
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
// 关闭弹出框
|
this.dialogPassword = false;
|
this.editor.reload();
|
}
|
});
|
},
|
// 生成token
|
updateToken(formData) {
|
formData.token = this.common.getGUID();
|
},
|
// 列表页面按钮点击事件
|
buttonClick(authNode) {
|
switch (authNode) {
|
case "import":
|
// 导入
|
this.importConfig.isShowDialog = true;
|
return true;
|
}
|
}
|
}
|
};
|
</script>
|