Files
his/openhis-ui-vue3/src/views/basicmanage/supplier/index.vue

527 lines
15 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryRef"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item label="厂家名称:" prop="searchKey">
<el-input
v-model="queryParams.searchKey"
placeholder="品名/商品名/英文品名/编码/拼音"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="厂商种类:" prop="typeEnum">
<el-select
v-model="queryParams.typeEnum"
placeholder="生产商/供应商"
clearable
style="width: 240px"
>
<el-option
v-for="dict in supplierTypeOptions"
:key="dict.value"
:label="dict.info"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['system:user:add']"
>添加</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Remove"
:disabled="multiple"
@click="handleClose"
v-hasPermi="['system:user:edit']"
>停用</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="CirclePlus"
:disabled="multiple"
@click="handleStart"
v-hasPermi="['system:user:remove']"
>启用</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Search"
@click="getList"
v-hasPermi="['system:user:import']"
>查询</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="CircleClose"
@click="handleClear"
v-hasPermi="['system:user:export']"
>清空条件</el-button
>
</el-col>
</el-row>
<el-table
v-loading="loading"
:data="supplierList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="50" align="center" />
<el-table-column label="编号" align="center" key="busNo" prop="busNo" />
<el-table-column
label="名称"
align="center"
key="name"
prop="name"
:show-overflow-tooltip="true"
/>
<el-table-column
label="拼音助记码"
align="center"
key="pyStr"
prop="pyStr"
:show-overflow-tooltip="true"
/>
<el-table-column
label="类型 "
align="center"
key="typeEnum_enumText"
prop="typeEnum_enumText"
:show-overflow-tooltip="true"
/>
<el-table-column
label="地址"
align="center"
key="address"
prop="address"
width="120"
/>
<el-table-column
label="联系人电话"
align="center"
key="phone"
prop="phone"
/>
<el-table-column
label="联系人邮箱"
align="center"
key="email"
prop="email"
width="160"
/>
<el-table-column
label="活动标识"
align="center"
key="activeFlag_enumText"
prop="activeFlag_enumText"
width="160"
/>
<el-table-column
label="机构"
align="center"
key="orgId_dictText"
prop="orgId_dictText"
width="160"
/>
<el-table-column
label="操作"
align="center"
width="150"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
link
type="primary"
icon="Edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:user:edit']"
>编辑</el-button
>
<el-button
link
type="primary"
icon="View"
@click="handleView(scope.row)"
v-hasPermi="['system:user:remove']"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" v-model="open" width="600px" append-to-body>
<el-form
:model="form"
:rules="rules"
ref="supplierRef"
label-width="110px"
>
<el-row>
<el-col :span="12">
<el-form-item label="名称" prop="name">
<el-input
v-model="form.name"
placeholder="请输入名称"
:disabled="form.id != undefined"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="编码" prop="busNo">
<el-input
v-model="form.busNo"
placeholder="请输入编码"
:disabled="form.id != undefined"
/>
</el-form-item>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="12">
<el-form-item label="拼音" prop="pyStr">
<el-input v-model="form.pyStr" maxlength="11" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="五笔码" prop="wbStr">
<el-input v-model="form.wbStr" maxlength="11" />
</el-form-item>
</el-col>
</el-row> -->
<el-row>
<el-col :span="12">
<el-form-item label="类型" prop="typeEnum">
<!-- <el-input v-model="form.typeEnum" maxlength="11" /> -->
<el-select
v-model="form.typeEnum"
placeholder="生产商/供应商"
clearable
style="width: 240px"
>
<el-option
v-for="dict in supplierTypeOptions"
:key="dict.value"
:label="dict.info"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="地址" prop="address">
<el-input v-model="form.address" maxlength="11" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="联系人电话" prop="phone">
<el-input v-model="form.phone" maxlength="11" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="联系人邮箱" prop="email">
<el-input v-model="form.email" maxlength="11" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="活动标识" prop="activeFlag">
<el-checkbox v-model="form.activeFlag"></el-checkbox>
</el-form-item>
</el-col>
<el-col :span="12">
<!-- <el-form-item label="机构编号" prop="orgId"> -->
<!-- <el-input v-model="form.orgId" maxlength="11" /> -->
<el-form-item label="提供部门" prop="orgId">
<el-tree-select
v-model="form.orgId"
:data="deptOptions"
:props="{ value: 'id', label: 'name', children: 'children' }"
value-key="id"
placeholder="请选择提供部门"
check-strictly
clearable
/>
<!-- </el-form-item> -->
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer v-if="title != '查看'">
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Supplier">
import {
getSupplierList,
editSupplier,
addSupplier,
getSupplierOne,
stopSupplier,
startSupplier,
getSupplierInit,
deptTreeSelect,
} from "./components/supplier";
const router = useRouter();
const { proxy } = getCurrentInstance();
const { sys_normal_disable, sys_user_sex } = proxy.useDict(
"sys_normal_disable",
"sys_user_sex"
);
const supplierList = ref([]);
const open = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const title = ref("");
const supplierTypeOptions = ref(undefined);
const deptOptions = ref(undefined); // 部门树选项
// 是否停用
const statusFlagOptions = ref(undefined);
// const initPassword = ref(undefined);
// const postOptions = ref([]);
// const roleOptions = ref([]);
const data = reactive({
form: {},
queryParams: {
pageNo: 1,
pageSize: 10,
searchKey: undefined, // 供应商名称
// busNo: undefined, // 编码
typeEnum: undefined, // 状态(包括 1预置2启用3停用
// sourceEnum: undefined, // 来源(包括 1厂商/产地目录分类2自定义
},
rules: {
busNo: [{ required: true, message: "编码不能为空", trigger: "blur" }],
name: [{ required: true, message: "名称不能为空", trigger: "blur" }],
// pyStr: [{ required: true, message: "拼音不能为空", trigger: "blur" }],
// wbStr: [{ required: true, message: "五笔拼音不能为空", trigger: "blur" }],
typeEnum: [{ required: true, message: "类型不能为空", trigger: "blur" }],
address: [{ required: true, message: "地址不能为空", trigger: "blur" }],
phone: [{ required: true, message: "联系人电话不能为空", trigger: "blur" }],
email: [{ required: true, message: "联系人邮箱不能为空", trigger: "blur" }],
activeFlag: [
{ required: true, message: "活动标识不能为空", trigger: "blur" },
],
},
});
const { queryParams, form, rules } = toRefs(data);
/** 厂商种类查询下拉树结构 */
function getsupplierTypeList() {
getSupplierInit().then((response) => {
console.log(response, "response");
supplierTypeOptions.value = response.data.supplierTypeOptions;
});
}
/** 查询部门下拉树结构 */
function getDeptTree() {
console.log("查询部门下拉树结构");
deptTreeSelect().then((response) => {
console.log(response, "response查询部门下拉树结构");
deptOptions.value = response.data.records;
console.log(deptOptions.value, "部门下拉树结构");
});
}
/** 查询厂商/产地目录列表 */
function getList() {
loading.value = true;
// queryParams.value.statusEnum = +queryParams.value.statusEnum
console.log(queryParams.value, "queryParams.value");
getSupplierList(queryParams.value).then((res) => {
loading.value = false;
console.log(res, "res", res.data.records);
supplierList.value = res.data.records;
console.log(supplierList.value, "supplierList.value");
total.value = res.data.total;
console.log(total.value, "total.value");
});
}
/** 节点单击事件 */
function handleNodeClick(data) {
queryParams.value.sourceEnum = data.id;
handleQuery();
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNo = 1;
getList();
}
/** 启用按钮操作 */
function handleStart(row) {
const stardIds = row.id || ids.value;
proxy.$modal
.confirm("是否确定启用数据!")
.then(function () {
return startSupplier(stardIds);
})
.then(() => {
getList();
proxy.$modal.msgSuccess("启用成功");
})
.catch(() => {});
}
/** 停用按钮操作 */
function handleClose(row) {
const stopIds = row.id || ids.value;
proxy.$modal
.confirm("是否确认停用数据!")
.then(function () {
return stopSupplier(stopIds);
})
.then(() => {
getList();
proxy.$modal.msgSuccess("停用成功");
})
.catch(() => {});
}
/** 清空条件按钮操作 */
function handleClear() {
// queryParams.value.pageNo = 1;
// queryParams.value.searchKey = undefined;
// queryParams.value.statusEnum = undefined;
// queryParams.value.sourceEnum = undefined;
// queryParams.value.busNo = undefined;
// 清空查询条件
proxy.resetForm("queryRef");
getList();
}
/** 选择条数 */
function handleSelectionChange(selection) {
console.log(selection, "selection");
// selectedData.value = selection.map((item) => ({ ...item })); // 存储选择的行数据
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 重置操作表单 */
function reset() {
form.value = {
id: undefined,
conditionCode: undefined,
pyStr: undefined,
status: undefined,
statusEnum: undefined,
};
proxy.resetForm("supplierRef");
}
/** 取消按钮 */
function cancel() {
open.value = false;
reset();
}
/** 新增按钮操作 */
function handleAdd() {
reset();
open.value = true;
title.value = "新增";
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset();
console.log(row, "row");
form.value = JSON.parse(JSON.stringify(row));
form.value.activeFlag == 1 ? (form.value.activeFlag = true) : (form.value.activeFlag = false); //是否为活性
// console.log(form.value.ty, "form.value");
open.value = true;
title.value = "厂商/产地编辑";
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["supplierRef"].validate((valid) => {
if (valid) {
form.activeFlag == true ? (form.activeFlag = 1) : (form.activeFlag = 0); //是否为活性
if (form.value.id != undefined) {
console.log(form.value, "editSupplier", form.value.statusEnum);
editSupplier(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
});
} else {
addSupplier(form.value).then((response) => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
});
}
}
});
}
/** 详细按钮操作 */
function handleView(row) {
reset();
title.value = "查看";
open.value = true;
getSupplierOne(row.id).then((response) => {
console.log(response, "responsebbbb", row.id);
form.value = response.data;
});
}
getsupplierTypeList();
getList();
getDeptTree();
</script>
<style scoped>
.custom-tree-node {
display: flex;
align-items: center;
}
</style>