|
@@ -26,6 +26,7 @@
|
|
|
v-model="dialogVisible"
|
|
|
width="800"
|
|
|
v-loading="loading"
|
|
|
+ destroy-on-close
|
|
|
>
|
|
|
<byForm
|
|
|
:formConfig="formConfig"
|
|
@@ -49,22 +50,34 @@
|
|
|
</el-dialog>
|
|
|
|
|
|
<el-dialog title="跟进记录" v-model="dialogVisibleOne" width="500">
|
|
|
- <div>
|
|
|
- <el-timeline :reverse="false">
|
|
|
- <el-timeline-item
|
|
|
- placement="top"
|
|
|
- v-for="(activity, index) in activities"
|
|
|
- :key="index"
|
|
|
- :timestamp="activity.handleTime"
|
|
|
- >
|
|
|
- <div>
|
|
|
- 跟进人:{{ activity.handleUserName }}
|
|
|
- <span>({{ activity.status ? "已完成" : "处理中" }})</span>
|
|
|
- </div>
|
|
|
- <div style="margin-top: 5px">跟进记录: {{ activity.explain }}</div>
|
|
|
- </el-timeline-item>
|
|
|
- </el-timeline>
|
|
|
- </div>
|
|
|
+ <byForm
|
|
|
+ :formConfig="formConfig"
|
|
|
+ :formOption="formOption"
|
|
|
+ v-model="formData.data"
|
|
|
+ :rules="rules"
|
|
|
+ ref="byform"
|
|
|
+ >
|
|
|
+ <template #records>
|
|
|
+ <div style="width: 100%">
|
|
|
+ <el-timeline :reverse="false">
|
|
|
+ <el-timeline-item
|
|
|
+ placement="top"
|
|
|
+ v-for="(activity, index) in activities"
|
|
|
+ :key="index"
|
|
|
+ :timestamp="activity.handleTime"
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ 跟进人:{{ activity.handleUserName }}
|
|
|
+ <span>({{ activity.status ? "已完成" : "处理中" }})</span>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 5px">
|
|
|
+ 跟进记录: {{ activity.explain }}
|
|
|
+ </div>
|
|
|
+ </el-timeline-item>
|
|
|
+ </el-timeline>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </byForm>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -103,19 +116,47 @@ let rules = ref({
|
|
|
processing: [
|
|
|
{ required: true, message: "请选择处理方式", trigger: "change" },
|
|
|
],
|
|
|
- explain: [{ required: true, message: "请输入处理说明", trigger: "blur" }],
|
|
|
+ explain: [{ required: true, message: "请输入跟进记录", trigger: "blur" }],
|
|
|
});
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
+const typeData = [
|
|
|
+ {
|
|
|
+ label: "到货质检",
|
|
|
+ value: "10",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "京东订单出库",
|
|
|
+ value: "20",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "调仓",
|
|
|
+ value: "30",
|
|
|
+ },
|
|
|
+];
|
|
|
+const statusData = [
|
|
|
+ {
|
|
|
+ label: "未处理",
|
|
|
+ value: "0",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "跟进中",
|
|
|
+ value: "1",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "已处理",
|
|
|
+ value: "2",
|
|
|
+ },
|
|
|
+];
|
|
|
const selectConfig = reactive([
|
|
|
{
|
|
|
label: "异常来源",
|
|
|
prop: "type",
|
|
|
- data: [],
|
|
|
+ data: typeData,
|
|
|
},
|
|
|
{
|
|
|
label: "处理状态",
|
|
|
- prop: "type",
|
|
|
- data: [],
|
|
|
+ prop: "status",
|
|
|
+ data: statusData,
|
|
|
},
|
|
|
]);
|
|
|
|
|
@@ -124,37 +165,50 @@ const config = computed(() => {
|
|
|
{
|
|
|
attrs: {
|
|
|
label: "异常来源",
|
|
|
- prop: "name",
|
|
|
+ prop: "type",
|
|
|
+ width: 100,
|
|
|
},
|
|
|
- render(type) {
|
|
|
- return proxy.dictDataEcho(type, warehouseType.value);
|
|
|
+ render(status) {
|
|
|
+ const current = typeData.find((x) => x.value == status);
|
|
|
+ if (current) return current.label;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ attrs: {
|
|
|
+ label: "关联单号",
|
|
|
+ prop: "linkCode",
|
|
|
+ width: 180,
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
attrs: {
|
|
|
label: "异常说明",
|
|
|
- prop: "type",
|
|
|
+ prop: "title",
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
attrs: {
|
|
|
label: "处理状态",
|
|
|
- prop: "name",
|
|
|
+ prop: "status",
|
|
|
+ width: 100,
|
|
|
},
|
|
|
- render(type) {
|
|
|
- return proxy.dictDataEcho(type, warehouseType.value);
|
|
|
+ render(status) {
|
|
|
+ const current = statusData.find((x) => x.value == status);
|
|
|
+ if (current) return current.label;
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
attrs: {
|
|
|
label: "最近操作人",
|
|
|
- prop: "keeperName",
|
|
|
+ prop: "handleUserName",
|
|
|
+ width: 120,
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
attrs: {
|
|
|
label: "最近操作时间",
|
|
|
- prop: "remark",
|
|
|
+ prop: "handleTime",
|
|
|
+ width: 160,
|
|
|
},
|
|
|
},
|
|
|
|
|
@@ -178,15 +232,15 @@ const config = computed(() => {
|
|
|
getDtl(row);
|
|
|
},
|
|
|
},
|
|
|
- {
|
|
|
- attrs: {
|
|
|
- label: "查看关联",
|
|
|
- type: "primary",
|
|
|
- text: true,
|
|
|
- },
|
|
|
- el: "button",
|
|
|
- click() {},
|
|
|
- },
|
|
|
+ // {
|
|
|
+ // attrs: {
|
|
|
+ // label: "查看关联",
|
|
|
+ // type: "primary",
|
|
|
+ // text: true,
|
|
|
+ // },
|
|
|
+ // el: "button",
|
|
|
+ // click() {},
|
|
|
+ // },
|
|
|
{
|
|
|
attrs: {
|
|
|
label: "跟进记录",
|
|
@@ -195,6 +249,12 @@ const config = computed(() => {
|
|
|
},
|
|
|
el: "button",
|
|
|
click() {
|
|
|
+ formConfig.value = formConfigData[1];
|
|
|
+ formData.data = {
|
|
|
+ type: row.type,
|
|
|
+ linkCode: row.linkCode,
|
|
|
+ title: row.title,
|
|
|
+ };
|
|
|
proxy
|
|
|
.post("/abnormalDetails/page", {
|
|
|
abnormalInfoId: row.id,
|
|
@@ -229,65 +289,139 @@ const formOption = reactive({
|
|
|
});
|
|
|
const byform = ref(null);
|
|
|
const treeData = ref([]);
|
|
|
-const formConfig = reactive([
|
|
|
- {
|
|
|
- type: "radio",
|
|
|
- prop: "status",
|
|
|
- label: "跟进结果",
|
|
|
- required: true,
|
|
|
- border: true,
|
|
|
- data: [
|
|
|
- { label: "完成", value: "1" },
|
|
|
- { label: "跟进中", value: "0" },
|
|
|
- ],
|
|
|
- },
|
|
|
+const formConfigData = [
|
|
|
+ [
|
|
|
+ {
|
|
|
+ type: "title",
|
|
|
+ title: "异常信息",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "select",
|
|
|
+ prop: "type",
|
|
|
+ label: "异常来源",
|
|
|
+ data: typeData,
|
|
|
+ itemWidth: 30,
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "input",
|
|
|
+ prop: "linkCode",
|
|
|
+ label: "关联单号",
|
|
|
+ itemWidth: 70,
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "input",
|
|
|
+ prop: "title",
|
|
|
+ label: "异常说明",
|
|
|
+ itemWidth: 100,
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "title",
|
|
|
+ title: "跟进信息",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "radio",
|
|
|
+ prop: "status",
|
|
|
+ label: "跟进记录",
|
|
|
+ required: true,
|
|
|
+ border: true,
|
|
|
+ data: [
|
|
|
+ { label: "完成", value: "1" },
|
|
|
+ { label: "跟进中", value: "0" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- type: "select",
|
|
|
- prop: "handleUser",
|
|
|
- label: "跟进人",
|
|
|
- isLoad: {
|
|
|
- url: `/tenantUser/list?pageNum=1&pageSize=9999&tenantId=${
|
|
|
- useUserStore().user.tenantId
|
|
|
- }`,
|
|
|
- labelKey: "nickName",
|
|
|
- labelVal: "userId",
|
|
|
- method: "get",
|
|
|
- resUrl: "rows",
|
|
|
+ {
|
|
|
+ type: "select",
|
|
|
+ prop: "handleUser",
|
|
|
+ label: "跟进人",
|
|
|
+ itemWidth: 50,
|
|
|
+ isLoad: {
|
|
|
+ url: `/tenantUser/list?pageNum=1&pageSize=9999&tenantId=${
|
|
|
+ useUserStore().user.tenantId
|
|
|
+ }`,
|
|
|
+ labelKey: "nickName",
|
|
|
+ labelVal: "userId",
|
|
|
+ method: "get",
|
|
|
+ resUrl: "rows",
|
|
|
+ },
|
|
|
},
|
|
|
- },
|
|
|
- {
|
|
|
- type: "select",
|
|
|
- prop: "nextHandleUser",
|
|
|
- label: "下一跟进人",
|
|
|
- isLoad: {
|
|
|
- url: `/tenantUser/list?pageNum=1&pageSize=9999&tenantId=${
|
|
|
- useUserStore().user.tenantId
|
|
|
- }`,
|
|
|
- labelKey: "nickName",
|
|
|
- labelVal: "userId",
|
|
|
- method: "get",
|
|
|
- resUrl: "rows",
|
|
|
+ {
|
|
|
+ type: "select",
|
|
|
+ prop: "nextHandleUser",
|
|
|
+ label: "下一跟进人",
|
|
|
+ itemWidth: 50,
|
|
|
+
|
|
|
+ isLoad: {
|
|
|
+ url: `/tenantUser/list?pageNum=1&pageSize=9999&tenantId=${
|
|
|
+ useUserStore().user.tenantId
|
|
|
+ }`,
|
|
|
+ labelKey: "nickName",
|
|
|
+ labelVal: "userId",
|
|
|
+ method: "get",
|
|
|
+ resUrl: "rows",
|
|
|
+ },
|
|
|
},
|
|
|
- },
|
|
|
- {
|
|
|
- type: "date",
|
|
|
- itemType: "datetime",
|
|
|
- prop: "handleTime",
|
|
|
- label: "跟进时间",
|
|
|
- },
|
|
|
- {
|
|
|
- type: "select",
|
|
|
- prop: "processing",
|
|
|
- label: "处理方式",
|
|
|
- },
|
|
|
- {
|
|
|
- type: "input",
|
|
|
- itemType: "textarea",
|
|
|
- prop: "explain",
|
|
|
- label: "处理说明",
|
|
|
- },
|
|
|
-]);
|
|
|
+ {
|
|
|
+ type: "date",
|
|
|
+ itemType: "datetime",
|
|
|
+ prop: "handleTime",
|
|
|
+ label: "跟进时间",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "select",
|
|
|
+ prop: "processing",
|
|
|
+ label: "处理方式",
|
|
|
+ data: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "input",
|
|
|
+ itemType: "textarea",
|
|
|
+ prop: "explain",
|
|
|
+ label: "跟进记录",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ {
|
|
|
+ type: "title",
|
|
|
+ title: "异常信息",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "select",
|
|
|
+ prop: "type",
|
|
|
+ label: "异常来源",
|
|
|
+ data: typeData,
|
|
|
+ itemWidth: 30,
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "input",
|
|
|
+ prop: "linkCode",
|
|
|
+ label: "关联单号",
|
|
|
+ itemWidth: 70,
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "input",
|
|
|
+ prop: "title",
|
|
|
+ label: "异常说明",
|
|
|
+ itemWidth: 100,
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "title",
|
|
|
+ title: "跟进信息",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: "slot",
|
|
|
+ slotName: "records",
|
|
|
+ label: "",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+];
|
|
|
+const formConfig = ref([]);
|
|
|
const getList = async (req) => {
|
|
|
sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
|
|
|
loading.value = true;
|
|
@@ -330,44 +464,44 @@ const submitForm = () => {
|
|
|
|
|
|
const getDtl = (row) => {
|
|
|
modalType.value = "add";
|
|
|
- formData.data.status = "0";
|
|
|
+ formConfig.value = formConfigData[0];
|
|
|
+ formData.data = {
|
|
|
+ status: "0",
|
|
|
+ abnormalInfoId: row.id,
|
|
|
+ type: row.type,
|
|
|
+ linkCode: row.linkCode,
|
|
|
+ title: row.title,
|
|
|
+ };
|
|
|
dialogVisible.value = true;
|
|
|
-
|
|
|
- // proxy.post("/warehouse/detail", { id: row.id }).then((res) => {
|
|
|
- // res.type = res.type + "";
|
|
|
- // formData.data = res;
|
|
|
- // console.log(formData);
|
|
|
- // dialogVisible.value = true;
|
|
|
- // });
|
|
|
};
|
|
|
-const warehouseType = ref([]);
|
|
|
+const handleMethon = ref([]);
|
|
|
const getDict = () => {
|
|
|
- // // 币种数据
|
|
|
- proxy
|
|
|
- .post("/dictTenantData/page", {
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 999,
|
|
|
- tenantId: useUserStore().user.tenantId,
|
|
|
- dictCode: "warehouse_type",
|
|
|
- })
|
|
|
- .then((res) => {
|
|
|
- warehouseType.value = res.rows;
|
|
|
- selectConfig[0].data = res.rows.map((x) => ({
|
|
|
- label: x.dictValue,
|
|
|
- value: x.dictKey,
|
|
|
- }));
|
|
|
- formConfig[0].data = res.rows.map((x) => ({
|
|
|
- label: x.dictValue,
|
|
|
- value: x.dictKey,
|
|
|
- }));
|
|
|
- });
|
|
|
+ proxy.getDictOne(["handle_methon"]).then((res) => {
|
|
|
+ handleMethon.value = res["handle_methon"];
|
|
|
+ formConfigData[0][9].data = handleMethon.value.map((x) => ({
|
|
|
+ label: x.dictValue,
|
|
|
+ value: x.dictKey,
|
|
|
+ }));
|
|
|
+ });
|
|
|
};
|
|
|
+getDict();
|
|
|
getList();
|
|
|
-// getDict();
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.tenant {
|
|
|
padding: 20px;
|
|
|
}
|
|
|
+:deep(.el-timeline-item) {
|
|
|
+ padding-bottom: 10px;
|
|
|
+}
|
|
|
+:deep(.el-timeline-item__wrapper) {
|
|
|
+ top: 5px;
|
|
|
+}
|
|
|
+</style>
|
|
|
+<style >
|
|
|
+ul {
|
|
|
+ margin: 0px;
|
|
|
+ padding: 0px;
|
|
|
+}
|
|
|
</style>
|