戴艳蓉 3 anos atrás
pai
commit
89276531c3

+ 1 - 1
src/views/purchaseAndSale/adjust/addEdit.vue → src/components/addEdit.vue

@@ -90,7 +90,7 @@
 import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
 import resToken from "@/mixins/resToken";
 import Tinymce from "@/components/Tinymce";
-import { platformType } from "./columns";
+import { platformType } from "../views/purchaseAndSale/adjust/columns";
 // import { isChinese } from "@/utils/validate";
 // import contrastModelVue from "./contrastModel.vue";
 export default {

+ 0 - 0
src/views/purchaseAndSale/adjust/comModule.vue → src/components/comModule.vue


+ 0 - 0
src/views/purchaseAndSale/adjust/contrastModel.vue → src/components/contrastModel.vue


+ 1 - 1
src/views/purchaseAndSale/adjust/record.vue → src/components/record.vue

@@ -37,7 +37,7 @@ import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
 import mixinPage from "@/mixins/elPaginationHandle";
 import resToken from "@/mixins/resToken";
 import contrastModel from "./contrastModel";
-import { recordList } from "./columns";
+import { recordList } from "@/views/pucColumns";
 export default {
   name: "record",
   mixins: [mixinPage, resToken],

+ 0 - 0
src/views/purchaseAndSale/adjust/select-handler-model/index.vue → src/components/select-handler-model/index.vue


+ 0 - 0
src/views/purchaseAndSale/adjust/select-handler-model/选择处理人弹窗 → src/components/select-handler-model/选择处理人弹窗


+ 4 - 0
src/views/orderUi/orderUiIndex/columns.js

@@ -0,0 +1,4 @@
+const platformType='3'
+export {
+  platformType
+};

+ 884 - 0
src/views/orderUi/orderUiIndex/detail.vue

@@ -0,0 +1,884 @@
+<template>
+  <div class="orderUiDetail pagePadding clear" v-loading="loading">
+    <div
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '007')"
+    >
+      <div class="left">
+        <div class="title clear">
+          <div class="title-left">#{{ ruleForm.bugNo }}</div>
+          <div class="title-right">
+            <el-input
+              class="notshow"
+              v-model="ruleForm.title"
+              :placeholder="'标题'"
+              :disabled="!powers.some((item) => item == '005')"
+              :size="'medium'"
+            />
+          </div>
+        </div>
+        <div class="stockApply-com">
+          <el-tabs :size="'mini'" v-model="activeName">
+            <el-tab-pane label="描述详情" name="1">
+              <div class="desc" v-if="powers.some((item) => item == '005')">
+                <tinymce
+                  v-if="newTime !== ''"
+                  v-model="ruleForm.remark"
+                  :width="'100%'"
+                  :height="'350px'"
+                />
+              </div>
+              <div class="desc" v-else>
+                <div class="desc-main">
+                  <div v-html="ruleForm.remark" class="show-html"></div>
+                </div>
+              </div>
+
+              <div class="pinglun">
+                <div class="pinglun-title">评论</div>
+                <div
+                  class="pinglun-input"
+                  v-if="!pinglunEdit"
+                  @click="pinglunEdit = true"
+                >
+                  请输入评论: Ctrl+V可粘贴截图
+                </div>
+                <div v-else>
+                  <comModule
+                    :id="'add'"
+                    @cancel="pinglunEdit = false"
+                    @submit="plunsubmit"
+                  />
+                </div>
+              </div>
+              <div class="tableData">
+                <div
+                  class="tableData-main"
+                  v-for="(item, index) in tableData"
+                  :key="item.talk_note + 'key'"
+                  :style="{
+                    borderLeft:
+                      index + 1 === tableData.length
+                        ? '2px solid transparent'
+                        : '2px solid #252b3a',
+                  }"
+                >
+                  <div class="tableData-title clear">
+                    <div class="dian-mian fl">
+                      <div class="dian">&nbsp;</div>
+                      <div
+                        class="dian-zhe"
+                        v-if="index + 1 === tableData.length"
+                      >
+                        &nbsp;
+                      </div>
+                    </div>
+                    <div class="user fl">{{ item.talk_name }}</div>
+                    <div class="time fr">{{ item.addtime }}</div>
+                    <div
+                      class="operation fr"
+                      v-if="!item.edit && item.is_edit === '0'"
+                    >
+                      <i class="el-icon-edit" @click="editItem(index)"></i>
+                      <i
+                        class="el-icon-delete"
+                        @click="deleteById(item.id)"
+                      ></i>
+                    </div>
+                  </div>
+                  <div class="tableData-talk_note">
+                    <div v-if="item.edit">
+                      <comModule
+                        :id="item.id"
+                        :value="item.talk_note"
+                        @cancel="tableData[index].edit = false"
+                        @submit="plunsubmit"
+                      />
+                    </div>
+                    <div
+                      class="talk-note-main"
+                      v-else
+                      v-html="item.talk_note"
+                    ></div>
+                  </div>
+                </div>
+                <div class="my-page" v-if="parmValue.total > 5">
+                  <el-pagination
+                    @current-change="handleCurrentChange"
+                    @prev-click="handleCurrentChange"
+                    @next-click="handleCurrentChange"
+                    :current-page="parmValue.page"
+                    :page-size="parmValue.size"
+                    layout="total, prev, pager, next"
+                    :total="parmValue.total"
+                  >
+                  </el-pagination>
+                </div>
+              </div>
+            </el-tab-pane>
+            <el-tab-pane label="操作记录" name="2">
+              <record :newTime="newTime" v-if="newTime !== ''" :bugNo="bugNo" />
+            </el-tab-pane>
+          </el-tabs>
+        </div>
+      </div>
+      <div class="right">
+        <div class="title">
+          基本信息
+          <el-button
+            class="fr"
+            :size="'mini'"
+            v-if="
+              powers.some((item) => item == '005') ||
+              powers.some((item) => item == '012')
+            "
+            type="primary"
+            style="margin: 6px 0 0 0"
+            @click="submitForm"
+            >保存
+          </el-button>
+        </div>
+        <el-form
+          ref="ruleForm"
+          :model="ruleForm"
+          :size="'mini'"
+          label-width="80px"
+          class="demo-ruleForm"
+        >
+          <el-form-item label="处理状态:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.status"
+              style="width: 100%"
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="处理状态:"
+            >
+              <el-option
+                v-for="item in statusOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="处理人:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.deal_id"
+              style="width: 100%"
+              filterable
+              clearable
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="处理人:"
+            >
+              <el-option
+                v-for="item in userOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+            <div
+              class="setUser"
+              v-if="powers.some((item) => item == '002')"
+              @click="showModel = true"
+            >
+              <i class="el-icon-setting"></i>
+            </div>
+          </el-form-item>
+          <el-form-item label="优先级:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.level"
+              style="width: 100%"
+              :size="'mini'"
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="优先级"
+            >
+              <el-option
+                v-for="item in levelOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="需求类型:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.type"
+              style="width: 100%"
+              :size="'mini'"
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="需求类型"
+            >
+              <el-option
+                v-for="item in typeOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="功能区:">
+            <good-class
+              class="notshow"
+              :value="ruleForm.model_id"
+              :size="'mini'"
+              @handleChange="goods_class_change"
+              :disabled="!powers.some((item) => item == '012')"
+              :type="'1'"
+              :placeholder="'功能区'"
+            />
+          </el-form-item>
+          <el-form-item label="业务编号:">
+            <el-input
+              class="notshow"
+              type="textarea"
+              :autosize="{ minRows: 1, maxRows: 10}"
+              placeholder="业务编号"
+              :disabled="!powers.some((item) => item == '005')"
+              v-model="ruleForm.noteNo"
+            >
+            </el-input>
+          </el-form-item>
+          <el-form-item label="创建人:">
+            <div
+              class="show-input"
+              :class="{ disabled: !powers.some((item) => item == '012') }"
+            >
+              {{ ruleForm.apply_name }}
+            </div>
+          </el-form-item>
+
+          <el-form-item label="创建人部门:">
+            <div class="show-input hei">
+              <el-tag
+                style="margin: 0 5px 0 0"
+                type="info"
+                size="mini"
+                v-for="(ditem, dindex) in ruleForm.company_name"
+                :key="ditem + dindex"
+              >
+                <span
+                  v-for="(cItem, cindex) in ditem"
+                  :key="cItem + dindex + cindex"
+                  :style="{ marginLeft: cindex > 0 ? '0px' : '0px' }"
+                >
+                  <span v-show="cindex > 0">/</span
+                  ><span>{{ cItem.name }}</span>
+                </span>
+              </el-tag>
+            </div>
+          </el-form-item>
+        </el-form>
+        <div class="tijiaoBTN"></div>
+      </div>
+      <select-handler-model
+        :id="queryId"
+        :show-model="showModel"
+        :type="type"
+        @refresh="(showModel = false), getMuser()"
+        @cancel="showModel = false"
+      />
+    </div>
+    <no-auth v-else></no-auth>
+  </div>
+</template>
+<script>
+import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import record from "@/components/record";
+import comModule from "@/components/comModule";
+import Tinymce from "@/components/Tinymce";
+import selectHandlerModel from "@/components/select-handler-model";
+
+import {
+  statusOptions,
+  levelOptions,
+  typeOptions,
+} from "@/views/pucColumns";
+import {
+  platformType,
+} from "./columns";
+export default {
+  name: "orderUiDetail",
+  mixins: [resToken],
+  components: {
+    Tinymce,
+    record,
+    comModule,
+    selectHandlerModel,
+  },
+  computed: {
+    //组件SIZE设置
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "orderUiDetail"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      pinglunEdit: false,
+      parmValue: {
+        page: 1, // 页码
+        size: 5, // 每页显示条数
+        id: this.queryId,
+        total: 0,
+      },
+      tableData: [],
+      bugNo: "",
+      statusOptions: statusOptions,
+      levelOptions: levelOptions,
+      typeOptions: typeOptions,
+      type: platformType,
+      userOptions: [],
+      ruleForm: {},
+      activeName: "1",
+      newTime: "",
+      showModel: false,
+      queryId: "",
+
+      loading: false,
+      rulesThis: this.rules,
+    };
+  },
+  mounted() {
+    this.queryId = this.$route.query.id;
+    this.initForm();
+  },
+  methods: {
+    async handleCurrentChange(val) {
+      console.log(val);
+      this.parmValue.page = val;
+      await this.searchList();
+    },
+    async initForm() {
+      this.loading = true;
+      this.newTime = "";
+      this.InitializeForm();
+      await this.resetForm();
+      await this.initData();
+      this.loading = false;
+      await this.searchList();
+    },
+
+    getNewTime() {
+      this.newTime = new Date().valueOf() + "";
+    },
+    editItem(index) {
+      this.tableData.forEach((v) => {
+        v.edit = false;
+      });
+      this.tableData[index].edit = true;
+    },
+    goods_class_change(e) {
+      this.ruleForm.model_id = e;
+      this.$refs.ruleForm.validateField("model_id");
+    },
+    async deleteById(id) {
+      await this.$confirm("确定要删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            id: id,
+          };
+          const res = await asyncRequest.comDel(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "删除成功",
+              message: "",
+            });
+            this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    async plunsubmit(e) {
+      if (!this.loading) {
+        this.loading = true;
+        const { id, input } = e;
+        let model = {
+          id: id,
+          talk_note: input,
+          bugNo: this.ruleForm.bugNo,
+        };
+        let res = {};
+        if (id === "add") {
+          delete model["id"];
+          res = await asyncRequest.comAdd(model);
+        } else {
+          res = await asyncRequest.comUpdate(model);
+        }
+        this.loading = false;
+        if (res && res.code === 0) {
+          this.$notify.success({
+            title: id === "add" ? "添加成功!" : "修改成功!",
+            message: "",
+          });
+          if (id === "add") {
+            this.pinglunEdit = false;
+          }
+          await this.initForm();
+        } else if (res && res.code >= 100 && res.code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(res.message);
+        }
+      }
+    },
+    async initData() {
+      const res = await asyncRequest.detail({ id: this.queryId });
+      if (res && res.code === 0) {
+        let {
+          id,
+          bugNo,
+          title,
+          company_type,
+          level,
+          type,
+          remark,
+          status,
+          apply_name,
+          model_id,
+          deal_id,
+          company_name,
+          noteNo,
+        } = res.data;
+        this.bugNo = bugNo;
+        // console.log(res.data);
+        this.ruleForm = {
+          id: id,
+          bugNo: bugNo,
+          title: title || "",
+          company_type: company_type || platformType,
+          remark: remark || "",
+          status: status || "",
+          level: level || "",
+          type: type || "",
+          noteNo: noteNo || "",
+          apply_name: apply_name || "",
+          model_id: model_id || [], //.split(",")
+          deal_id: deal_id || "",
+          company_name: company_name || [],
+        };
+        this.getNewTime();
+        await this.getMuser();
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+    },
+    async getMuser() {
+      this.userOptions = [];
+      const res = await asyncRequest.MUser({ company_id: platformType });
+      if (res && res.code === 0) {
+        let list = res.data;
+        list.forEach((v) => {
+          let model = {
+            value: v.manange_id,
+            label: v.manange_name,
+          };
+          this.userOptions.push(model);
+        });
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+    },
+    // 刷新表格
+    async searchList() {
+      // this.tableData = [];
+      this.parmValue.id = this.queryId;
+      const res = await asyncRequest.cloudlist(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        let { list, count } = res.data;
+        list.forEach((v) => {
+          v.edit = false;
+        });
+        this.tableData = list;
+        this.parmValue.total = Number(count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.parmValue.total = 0;
+      }
+    },
+    // 重置
+    async resetForm() {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          this.InitializeForm();
+        }
+      });
+    },
+    InitializeForm() {
+      this.ruleForm = {
+        id: "",
+        bugNo: "",
+        title: "",
+        company_type: "",
+        remark: "",
+        status: "",
+        level: "",
+        type: "",
+        apply_name: "",
+        noteNo: "",
+        deal_id: "",
+        model_id: [],
+        company_name: [],
+      };
+    },
+    // 保存更改
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.loading = true;
+          let model = JSON.parse(JSON.stringify(this.ruleForm));
+          // model.model_id = model.model_id.toString();
+          delete model["company_name"];
+          delete model["apply_name"];
+          let remark = model.remark;
+          remark = remark.replace(/\n/g, "");
+          remark = remark.replace(/"/g, "'");
+          model.remark = remark;
+          let length = 5000;
+          if (model.remark.length > length) {
+            this.$message.warning("描述文字及标签总长度不能超过5000!");
+            this.loading = false;
+            return;
+          }
+          let res = await asyncRequest.update(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "修改成功",
+              message: "",
+            });
+
+            await this.initForm();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+          this.loading = false;
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.orderUiDetail {
+  width: 100%;
+  padding: 16px;
+  box-sizing: border-box;
+  /deep/ .notshow {
+    .el-textarea__inner {
+      border-color: transparent !important;
+      background: transparent !important;
+      &:hover {
+        cursor: pointer;
+        background: rgb(242, 245, 250);
+      }
+    }
+    &:hover {
+      cursor: pointer;
+      background: rgb(242, 245, 250);
+    }
+    &.el-input--medium {
+      input {
+        color: #000 !important;
+        font-size: 16px;
+      }
+    }
+    input {
+      border-color: transparent !important;
+      background: transparent !important;
+    }
+    // &.el-input--mini {
+    input::-webkit-input-placeholder {
+      font-size: 12px !important;
+    }
+    input::-moz-placeholder {
+      /* Mozilla Firefox 19+ */
+      font-size: 12px !important;
+    }
+    input:-moz-placeholder {
+      /* Mozilla Firefox 4 to 18 */
+      font-size: 12px !important;
+    }
+    input:-ms-input-placeholder {
+      /* Internet Explorer 10-11 */
+      font-size: 12px !important;
+    }
+    // }
+    .el-input__suffix {
+      i {
+        color: transparent !important;
+      }
+    }
+  }
+  .left {
+    width: calc(100% - 350px);
+    float: left;
+    // padding: 16px;
+    box-sizing: border-box;
+    .title {
+      padding: 0 0 4px 0;
+      .title-left {
+        float: left;
+        height: 36px;
+        line-height: 36px;
+        width: 190px;
+      }
+      .title-right {
+        float: left;
+        width: calc(100% - 190px);
+        height: 30px;
+        line-height: 30px;
+      }
+    }
+
+    .desc {
+      width: 100%;
+      box-sizing: border-box;
+      padding: 0 2px 0 0;
+      height: 421px;
+
+      .desc-main {
+        position: relative;
+        border: 2px solid #dfe4ed;
+        line-height: 40px;
+        width: 100%;
+        height: 100%;
+        padding: 16px;
+        box-sizing: border-box;
+        overflow-y: scroll;
+      }
+    }
+    .pinglun {
+      width: 100%;
+      box-sizing: border-box;
+      padding: 0 0 16px 0;
+      .pinglun-title {
+        color: #252b3a;
+        color: var(--devui-text, #252b3a);
+        font-size: 14px;
+        height: 50px;
+        line-height: 60px;
+        font-weight: 700;
+      }
+      .pinglun-input {
+        padding: 0 12px;
+        font-size: 14px;
+        height: 30px;
+        line-height: 30px;
+        color: #c0c4cc;
+        border: 1px solid #dcdfe6;
+        border-radius: 4px;
+        &:hover {
+          cursor: pointer;
+        }
+      }
+    }
+    .tableData {
+      width: 100%;
+      box-sizing: border-box;
+      padding: 26px 0 0 5px;
+      .tableData-main {
+        position: relative;
+
+        .tableData-title {
+          height: 26px;
+          position: absolute;
+          z-index: 2;
+          left: -4px;
+          top: -13px;
+          line-height: 26px;
+          width: 100%;
+          padding: 0 16px 0 0;
+          .dian-mian {
+            position: relative;
+            width: 5px;
+            height: 26px;
+            line-height: 26px;
+            .dian {
+              width: 6px;
+              height: 6px;
+              border-radius: 50%;
+              overflow: hidden;
+              z-index: 3;
+              position: absolute;
+              margin: 9px 0 0 0;
+              background: #252b3a;
+            }
+            .dian-zhe {
+              background: #fff;
+              width: 2px;
+              height: 13px;
+              position: absolute;
+              left: 2px;
+              bottom: 0;
+            }
+          }
+
+          .user {
+            font-size: 12px;
+            padding: 0 0 0 18px;
+          }
+          .time {
+            font-size: 12px;
+            padding: 0 0 0 16px;
+            color: #8a8e99;
+          }
+          .operation {
+            i {
+              margin: 0 0 0 8px;
+              color: #8a8e99;
+              &:hover {
+                cursor: pointer;
+              }
+            }
+          }
+        }
+        .tableData-talk_note {
+          margin: -11px 0 0 0;
+          padding: 32px 16px 50px 32px;
+          font-size: 12px;
+          .talk-note-main {
+            word-break: break-all;
+            line-height: 22px;
+            /deep/ * {
+              word-break: break-all;
+            }
+          }
+        }
+      }
+    }
+    .my-page {
+      position: relative;
+      margin: -30px 0 10px 0;
+      width: 100%;
+      box-sizing: border-box;
+    }
+  }
+  .right {
+    width: 350px;
+    float: right;
+    padding: 40px 0 0 18px;
+    box-sizing: border-box;
+
+    .title {
+      width: 100%;
+      padding: 0 20px;
+      height: 40px;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box;
+      line-height: 40px;
+      display: inline-block;
+      list-style: none;
+      font-size: 14px;
+      font-weight: 500;
+      color: #303133;
+      position: relative;
+      border-bottom: 2px solid rgb(223, 228, 237);
+      margin: 0 0 18px 0;
+    }
+    .demo-ruleForm {
+      /deep/ .el-form-item--mini.el-form-item {
+        margin-bottom: 10px !important;
+      }
+      /deep/ .el-form-item--mini .el-form-item__label {
+        font-size: 12px !important;
+        font-weight: lighter !important;
+        color: #000 !important;
+        padding: 0 3px 0 0 !important;
+      }
+
+      .show-input {
+        height: 28px !important;
+        line-height: 28px !important;
+        overflow: hidden !important;
+        font-size: 12px !important;
+        color: #606266 !important;
+        padding: 0 15px !important;
+        box-sizing: border-box !important;
+        &.ho {
+          &:hover {
+            cursor: pointer;
+            background: rgb(242, 245, 250);
+          }
+        }
+        &.disabled {
+          color: #c0c4cc !important;
+          // cursor: not-allowed !important;
+        }
+        &.hei {
+          height: auto !important;
+          line-height: 28px auto !important;
+        }
+      }
+      .setUser {
+        position: absolute;
+        right: 0;
+        top: 0;
+        width: 30px;
+        height: 28px;
+        line-height: 28px;
+        text-align: center;
+        &:hover {
+          cursor: pointer;
+        }
+        i {
+          font-size: 16px;
+        }
+      }
+    }
+  }
+}
+.atuser {
+  width: 100%;
+  border: 1px solid red;
+  .editor {
+    width: 700px;
+    height: 160px;
+    overflow: hidden;
+    border: 0px;
+    outline: none;
+    resize: none;
+    -webkit-appearance: none;
+  }
+}
+</style>

+ 401 - 0
src/views/orderUi/orderUiIndex/index.vue

@@ -0,0 +1,401 @@
+<template>
+  <div class="orderUiIndex pagePadding">
+    <div
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+    >
+      <ex-table
+        v-loading="loading"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @screen-reset="
+          parmValue.page = 1;
+          pageInfo.curr = 1;
+          searchList();
+        "
+        @screen-submit="
+          parmValue.page = 1;
+          pageInfo.curr = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{}">
+          <div style="width: 100%">
+            <el-row style="padding: 0 0 0 80px">
+              <el-col :span="5" style="width: 100px">
+                <el-select
+                  v-model="parmValue.level"
+                  style="width: 100%"
+                  :size="searchSize"
+                  clearable
+                  @change="
+                    parmValue.page = 1;
+                    pageInfo.curr = 1;
+                    searchList();
+                  "
+                  placeholder="优先级"
+                >
+                  <el-option
+                    v-for="item in levelOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-col>
+              <el-col :span="5" style="width: 140px; padding: 0 0 0 10px">
+                <el-select
+                  v-model="parmValue.type"
+                  style="width: 100%"
+                  :size="searchSize"
+                  clearable
+                  @change="
+                    parmValue.page = 1;
+                    pageInfo.curr = 1;
+                    searchList();
+                  "
+                  placeholder="需求类型"
+                >
+                  <el-option
+                    v-for="item in typeOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                    clearable
+                  >
+                  </el-option>
+                </el-select>
+              </el-col>
+              <el-col :span="5" style="width: 301px; padding: 0 0 0 10px">
+                <period-date-picker
+                  :start="parmValue.start"
+                  :end="parmValue.end"
+                  :width="'134px'"
+                  :size="searchSize"
+                  @timeReturned="handleTime"
+                />
+              </el-col>
+
+              <el-col :span="3" style="width: 66px; float: right">
+                <el-button
+                  type="primary"
+                  :size="searchSize"
+                  style="float: right"
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
+              </el-col>
+            </el-row>
+            <el-row style="padding: 12px 0 0 0">
+              <el-col :span="5" style="width: 180px">
+                <el-select
+                  v-model="parmValue.status"
+                  style="width: 100%"
+                  clearable
+                  @change="
+                    parmValue.page = 1;
+                    pageInfo.curr = 1;
+                    searchList();
+                  "
+                  :size="searchSize"
+                  placeholder="状态筛选"
+                >
+                  <el-option
+                    v-for="item in seachStatus"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-col>
+              <el-col :span="10" style="width: 410px; padding: 0 0 0 10px">
+                <el-input
+                  placeholder="关键字"
+                  v-model="input"
+                  :size="searchSize"
+                  class="input-with-select"
+                >
+                  <el-select
+                    v-model="select"
+                    slot="prepend"
+                    style="width: 100px"
+                    placeholder="筛选类型"
+                  >
+                    <el-option label="需求编号" value="1" />
+                    <el-option label="业务编号" value="0" />
+                    <el-option label="需求标题" value="2" />
+                    <el-option label="申请人" value="3" />
+                    <el-option label="处理人" value="4" />
+                  </el-select>
+                  <el-button
+                    slot="append"
+                    icon="el-icon-search"
+                    @click="
+                      parmValue.page = 1;
+                      pageInfo.curr = 1;
+                      searchList();
+                    "
+                  ></el-button>
+                </el-input>
+              </el-col>
+              <el-col
+                :span="3"
+                style="width: 66px; float: right"
+                v-if="powers.some((item) => item == '003')"
+              >
+                <el-button
+                  :size="searchSize"
+                  type="success"
+                  style="float: right"
+                  @click="showModel = true"
+                >
+                  添加
+                </el-button>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.status == '0' ? 'warning' : ''"
+            v-text="
+              (
+                statusOptions.find((item) => item.value == scope.row.status) ||
+                {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+        <template #company_name="{ scope }">
+          <el-tag
+            style="margin: 0 5px 0 0"
+            :size="tablebtnSize"
+            type="info"
+            v-for="(ditem, dindex) in scope.row.company_name"
+            :key="ditem + dindex"
+          >
+            <span
+              v-for="(cItem, cindex) in ditem"
+              :key="cItem + dindex + cindex"
+              :style="{ marginLeft: cindex > 0 ? '0px' : '0px' }"
+            >
+              <span v-show="cindex > 0">/</span><span>{{ cItem.name }}</span>
+            </span>
+          </el-tag>
+        </template>
+        <template #level="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="
+              (levelOptions.find((item) => item.value == scope.row.level) || {})
+                .type || 'success'
+            "
+            v-text="
+              (levelOptions.find((item) => item.value == scope.row.level) || {})
+                .label || '--'
+            "
+          ></el-tag>
+        </template>
+        <template #types="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.type == '0' ? 'warning' : ''"
+            v-text="
+              (typeOptions.find((item) => item.value == scope.row.type) || {})
+                .label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #operation="{ scope }">
+          <el-tooltip
+            v-if="powers.some((item) => item == '007')"
+            effect="dark"
+            content="详情"
+            placement="top"
+          >
+            <i
+              class="el-icon-view tb-icon"
+              @click="routeGoto('orderUiIndexDetail', { id: scope.row.id })"
+            ></i>
+          </el-tooltip>
+        </template>
+      </ex-table>
+      <!-- 弹窗 新增/修改 -->
+      <add-edit
+        :show-model="showModel"
+        @refresh="searchList"
+        @cancel="showModel = false"
+      />
+    </div>
+    <no-auth v-else></no-auth>
+  </div>
+</template>
+<script>
+import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
+import mixinPage from "@/mixins/elPaginationHandle";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import addEdit from "@/components/addEdit";
+
+import {
+  seachStatus,
+  statusOptions,
+  levelOptions,
+  typeOptions,
+  columnsDeploy,
+} from "@/views/pucColumns";
+import {
+  platformType,
+} from "./columns";
+export default {
+  name: "orderUiIndex",
+  mixins: [mixinPage, resToken],
+  components: {
+    addEdit,
+  },
+  computed: {
+    //组件SIZE设置
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "orderUiIndex"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      select: "1",
+      input: "",
+      seachStatus: seachStatus,
+      statusOptions: statusOptions,
+      levelOptions: levelOptions,
+      typeOptions: typeOptions,
+      showModel1: false,
+      loading: true,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      parmValue: {
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        apply_name: "",
+        title: "",
+        type: "",
+        level: "",
+        bugNo: "",
+        status: "",
+        noteNo: "",
+        company_type:platformType,
+        deal_name: "",
+        start: "",
+        end: "",
+      },
+
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: columnsDeploy,
+    };
+  },
+  mounted() {
+    this.searchList();
+  },
+  methods: {
+    // restSearch() {
+    //   // 表格 - 分页
+    //   this.pageInfo = {
+    //     size: 15,
+    //     curr: 1,
+    //     total: 0,
+    //   };
+    //   this.parmValue = {
+    //     page: 1, // 页码
+    //     size: 15, // 每页显示条数
+    //   };
+    //   this.searchList();
+    // },
+    // 新建/编辑/详情
+    openModal(id, isDetail) {
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = isDetail;
+    },
+    // 时间
+    async handleTime(e) {
+      if (e.startTime !== "") {
+        this.parmValue.start = e.startTime;
+      } else {
+        this.parmValue.start = "";
+      }
+      if (e.endTime !== "") {
+        this.parmValue.end = e.endTime;
+      } else {
+        this.parmValue.end = "";
+      }
+      if (this.parmValue.start !== "" && this.parmValue.end !== "") {
+        this.parmValue.page = 1;
+        this.pageInfo.curr = 1;
+        await this.searchList();
+      }
+    },
+    // 刷新表格
+    async searchList() {
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end === "") ||
+        (this.parmValue.start === "" && this.parmValue.end !== "")
+      ) {
+        this.$message.warning("时间区间不完整!");
+        return;
+      }
+      this.loading = true;
+      this.parmValue.noteNo = this.select === "0" ? this.input : "";
+      this.parmValue.bugNo = this.select === "1" ? this.input : "";
+      this.parmValue.title = this.select === "2" ? this.input : "";
+      this.parmValue.apply_name = this.select === "3" ? this.input : "";
+      this.parmValue.deal_name = this.select === "4" ? this.input : "";
+
+      const res = await asyncRequest.list(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        this.tableData = res.data.list;
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 0 - 0
src/views/orderUi/orderUiIndex/采销平台订单系统


+ 0 - 0
src/views/orderUi/采销平台


+ 222 - 0
src/views/pucColumns.js

@@ -0,0 +1,222 @@
+const seachStatus = [
+  {
+    value: "0",
+    label: "待分配",
+  },
+  {
+    value: "1",
+    label: "进行中",
+  },
+  {
+    value: "2",
+    label: "已解决",
+  },
+  {
+    value: "3",
+    label: "测试中",
+  },
+  {
+    value: "4",
+    label: "已拒绝",
+  },
+  {
+    value: "5",
+    label: "已关闭",
+  },
+  {
+    value: "6",
+    label: "延后处理",
+  },
+  {
+    value: "8",
+    label: "未关闭的",
+  },
+  {
+    value: "9",
+    label: "我创建的",
+  },
+  {
+    value: "10",
+    label: "我处理过的",
+  },
+  {
+    value: "11",
+    label: "到我处理的",
+  },
+]
+const statusOptions = [
+  {
+    value: "0",
+    label: "待分配",
+  },
+  {
+    value: "1",
+    label: "进行中",
+  },
+  {
+    value: "2",
+    label: "已解决",
+  },
+  {
+    value: "3",
+    label: "测试中",
+  },
+  {
+    value: "4",
+    label: "已拒绝",
+  },
+  {
+    value: "5",
+    label: "已关闭",
+  },
+  {
+    value: "6",
+    label: "延后处理",
+  },
+]
+const levelOptions = [
+  {
+    value: "1",
+    label: "高",
+    type:'danger'
+  },
+  {
+    value: "2",
+    label: "中",
+    type:'info'
+  },
+  {
+    value: "3",
+    label: "低",
+    type:'success'
+  },
+]
+const typeOptions = [
+  {
+    value: "0",
+    label: "缺陷(Bug)",
+  },
+  {
+    value: "1",
+    label: "任务(Task)",
+  },
+  {
+    value: "2",
+    label: "需求(Story)",
+  },
+]
+const columnsDeploy = [
+  {
+    prop: "bugNo",
+    label: "需求编号",
+    width: '160px'
+  },
+
+  {
+    prop: "status",
+    label: "状态",
+    _slot_: "status",
+    width: '70px'
+  },
+  {
+    prop: "level",
+    label: "优先级",
+    _slot_: "level",
+    width: '60px'
+  },
+  {
+    prop: "type",
+    label: "需求类型",
+    _slot_: "types",
+    width: '95px'
+  },
+
+  {
+    prop: "deal_name",
+    label: "处理人",
+    width: '70px'
+  },
+  {
+    prop: "apply_name",
+    label: "申请人",
+    width: '70px'
+  },
+  {
+    prop: "title",
+    label: "标题",
+    'min-width': '160px'
+  },
+  {
+    prop: "company_name",
+    label: "申请人部门",
+    _slot_: "company_name",
+    "min-width": '140px'
+  },
+  // {
+  //   prop: "updatetime",
+  //   label: "更新时间",
+  //   width: '140px'
+  // },
+  {
+    prop: "addtime",
+    label: "创建时间",
+    width: '140px'
+  },
+  {
+    prop: "",
+    label: "操作",
+    fixed: "right",
+    _noset_: true,
+    _slot_: "operation",
+    width: "50",
+  },
+]
+ const recordList=[
+  {
+    prop: "id",
+    label: "编号",
+    width: "60",
+  },
+  {
+    prop: "addtime",
+    label: "操作时间",
+    width: "140",
+  },
+  {
+    prop: "action_name",
+    label: "操作人",
+    width: "70",
+  },
+  {
+    prop: "type_name",
+    label: "操作类型",
+    width: "70",
+  },
+
+  {
+    prop: "handle_name",
+    label: "操作字段",
+    width: "90",
+  },
+  {
+    prop: "action_item",
+    label: "操作前",
+    _slot_: "action_item",
+  },
+  {
+    prop: "action_after",
+    label: "操作后",
+    _slot_: "action_after",
+  },
+ 
+]
+const platformType='1'
+export {
+  seachStatus,
+  statusOptions,
+  levelOptions,
+  typeOptions,
+  columnsDeploy,
+  recordList,
+  platformType
+};

+ 0 - 218
src/views/purchaseAndSale/adjust/columns.js

@@ -1,222 +1,4 @@
-const seachStatus = [
-  {
-    value: "0",
-    label: "待分配",
-  },
-  {
-    value: "1",
-    label: "进行中",
-  },
-  {
-    value: "2",
-    label: "已解决",
-  },
-  {
-    value: "3",
-    label: "测试中",
-  },
-  {
-    value: "4",
-    label: "已拒绝",
-  },
-  {
-    value: "5",
-    label: "已关闭",
-  },
-  {
-    value: "6",
-    label: "延后处理",
-  },
-  {
-    value: "8",
-    label: "未关闭的",
-  },
-  {
-    value: "9",
-    label: "我创建的",
-  },
-  {
-    value: "10",
-    label: "我处理过的",
-  },
-  {
-    value: "11",
-    label: "到我处理的",
-  },
-]
-const statusOptions = [
-  {
-    value: "0",
-    label: "待分配",
-  },
-  {
-    value: "1",
-    label: "进行中",
-  },
-  {
-    value: "2",
-    label: "已解决",
-  },
-  {
-    value: "3",
-    label: "测试中",
-  },
-  {
-    value: "4",
-    label: "已拒绝",
-  },
-  {
-    value: "5",
-    label: "已关闭",
-  },
-  {
-    value: "6",
-    label: "延后处理",
-  },
-]
-const levelOptions = [
-  {
-    value: "1",
-    label: "高",
-    type:'danger'
-  },
-  {
-    value: "2",
-    label: "中",
-    type:'info'
-  },
-  {
-    value: "3",
-    label: "低",
-    type:'success'
-  },
-]
-const typeOptions = [
-  {
-    value: "0",
-    label: "缺陷(Bug)",
-  },
-  {
-    value: "1",
-    label: "任务(Task)",
-  },
-  {
-    value: "2",
-    label: "需求(Story)",
-  },
-]
-const columnsDeploy = [
-  {
-    prop: "bugNo",
-    label: "需求编号",
-    width: '160px'
-  },
-
-  {
-    prop: "status",
-    label: "状态",
-    _slot_: "status",
-    width: '70px'
-  },
-  {
-    prop: "level",
-    label: "优先级",
-    _slot_: "level",
-    width: '60px'
-  },
-  {
-    prop: "type",
-    label: "需求类型",
-    _slot_: "types",
-    width: '95px'
-  },
-
-  {
-    prop: "deal_name",
-    label: "处理人",
-    width: '70px'
-  },
-  {
-    prop: "apply_name",
-    label: "申请人",
-    width: '70px'
-  },
-  {
-    prop: "title",
-    label: "标题",
-    'min-width': '160px'
-  },
-  {
-    prop: "company_name",
-    label: "申请人部门",
-    _slot_: "company_name",
-    "min-width": '140px'
-  },
-  // {
-  //   prop: "updatetime",
-  //   label: "更新时间",
-  //   width: '140px'
-  // },
-  {
-    prop: "addtime",
-    label: "创建时间",
-    width: '140px'
-  },
-  {
-    prop: "",
-    label: "操作",
-    fixed: "right",
-    _noset_: true,
-    _slot_: "operation",
-    width: "50",
-  },
-]
- const recordList=[
-  {
-    prop: "id",
-    label: "编号",
-    width: "60",
-  },
-  {
-    prop: "addtime",
-    label: "操作时间",
-    width: "140",
-  },
-  {
-    prop: "action_name",
-    label: "操作人",
-    width: "70",
-  },
-  {
-    prop: "type_name",
-    label: "操作类型",
-    width: "70",
-  },
-
-  {
-    prop: "handle_name",
-    label: "操作字段",
-    width: "90",
-  },
-  {
-    prop: "action_item",
-    label: "操作前",
-    _slot_: "action_item",
-  },
-  {
-    prop: "action_after",
-    label: "操作后",
-    _slot_: "action_after",
-  },
- 
-]
 const platformType='1'
 export {
-  seachStatus,
-  statusOptions,
-  levelOptions,
-  typeOptions,
-  columnsDeploy,
-  recordList,
   platformType
 };

+ 6 - 3
src/views/purchaseAndSale/adjust/detail.vue

@@ -292,14 +292,17 @@
 import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
 import { mapGetters } from "vuex";
 import resToken from "@/mixins/resToken";
-import record from "./record";
-import comModule from "./comModule";
+import record from "@/components/record";
+import comModule from "@/components/comModule";
 import Tinymce from "@/components/Tinymce";
-import selectHandlerModel from "./select-handler-model";
+import selectHandlerModel from "@/components/select-handler-model";
+
 import {
   statusOptions,
   levelOptions,
   typeOptions,
+} from "@/views/pucColumns";
+import {
   platformType,
 } from "./columns";
 export default {

+ 5 - 1
src/views/purchaseAndSale/adjust/index.vue

@@ -244,7 +244,7 @@ import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
 import mixinPage from "@/mixins/elPaginationHandle";
 import { mapGetters } from "vuex";
 import resToken from "@/mixins/resToken";
-import addEdit from "./addEdit";
+import addEdit from "@/components/addEdit";
 
 import {
   seachStatus,
@@ -252,6 +252,9 @@ import {
   levelOptions,
   typeOptions,
   columnsDeploy,
+} from "@/views/pucColumns";
+import {
+  platformType,
 } from "./columns";
 export default {
   name: "adjust",
@@ -297,6 +300,7 @@ export default {
         bugNo: "",
         status: "",
         noteNo: "",
+        company_type:platformType,
         deal_name: "",
         start: "",
         end: "",

+ 0 - 0
src/views/yunshu/yunshuIndex/516系统


+ 4 - 0
src/views/yunshu/yunshuIndex/columns.js

@@ -0,0 +1,4 @@
+const platformType='2'
+export {
+  platformType
+};

+ 884 - 0
src/views/yunshu/yunshuIndex/detail.vue

@@ -0,0 +1,884 @@
+<template>
+  <div class="yunshuDetail pagePadding clear" v-loading="loading">
+    <div
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '007')"
+    >
+      <div class="left">
+        <div class="title clear">
+          <div class="title-left">#{{ ruleForm.bugNo }}</div>
+          <div class="title-right">
+            <el-input
+              class="notshow"
+              v-model="ruleForm.title"
+              :placeholder="'标题'"
+              :disabled="!powers.some((item) => item == '005')"
+              :size="'medium'"
+            />
+          </div>
+        </div>
+        <div class="stockApply-com">
+          <el-tabs :size="'mini'" v-model="activeName">
+            <el-tab-pane label="描述详情" name="1">
+              <div class="desc" v-if="powers.some((item) => item == '005')">
+                <tinymce
+                  v-if="newTime !== ''"
+                  v-model="ruleForm.remark"
+                  :width="'100%'"
+                  :height="'350px'"
+                />
+              </div>
+              <div class="desc" v-else>
+                <div class="desc-main">
+                  <div v-html="ruleForm.remark" class="show-html"></div>
+                </div>
+              </div>
+
+              <div class="pinglun">
+                <div class="pinglun-title">评论</div>
+                <div
+                  class="pinglun-input"
+                  v-if="!pinglunEdit"
+                  @click="pinglunEdit = true"
+                >
+                  请输入评论: Ctrl+V可粘贴截图
+                </div>
+                <div v-else>
+                  <comModule
+                    :id="'add'"
+                    @cancel="pinglunEdit = false"
+                    @submit="plunsubmit"
+                  />
+                </div>
+              </div>
+              <div class="tableData">
+                <div
+                  class="tableData-main"
+                  v-for="(item, index) in tableData"
+                  :key="item.talk_note + 'key'"
+                  :style="{
+                    borderLeft:
+                      index + 1 === tableData.length
+                        ? '2px solid transparent'
+                        : '2px solid #252b3a',
+                  }"
+                >
+                  <div class="tableData-title clear">
+                    <div class="dian-mian fl">
+                      <div class="dian">&nbsp;</div>
+                      <div
+                        class="dian-zhe"
+                        v-if="index + 1 === tableData.length"
+                      >
+                        &nbsp;
+                      </div>
+                    </div>
+                    <div class="user fl">{{ item.talk_name }}</div>
+                    <div class="time fr">{{ item.addtime }}</div>
+                    <div
+                      class="operation fr"
+                      v-if="!item.edit && item.is_edit === '0'"
+                    >
+                      <i class="el-icon-edit" @click="editItem(index)"></i>
+                      <i
+                        class="el-icon-delete"
+                        @click="deleteById(item.id)"
+                      ></i>
+                    </div>
+                  </div>
+                  <div class="tableData-talk_note">
+                    <div v-if="item.edit">
+                      <comModule
+                        :id="item.id"
+                        :value="item.talk_note"
+                        @cancel="tableData[index].edit = false"
+                        @submit="plunsubmit"
+                      />
+                    </div>
+                    <div
+                      class="talk-note-main"
+                      v-else
+                      v-html="item.talk_note"
+                    ></div>
+                  </div>
+                </div>
+                <div class="my-page" v-if="parmValue.total > 5">
+                  <el-pagination
+                    @current-change="handleCurrentChange"
+                    @prev-click="handleCurrentChange"
+                    @next-click="handleCurrentChange"
+                    :current-page="parmValue.page"
+                    :page-size="parmValue.size"
+                    layout="total, prev, pager, next"
+                    :total="parmValue.total"
+                  >
+                  </el-pagination>
+                </div>
+              </div>
+            </el-tab-pane>
+            <el-tab-pane label="操作记录" name="2">
+              <record :newTime="newTime" v-if="newTime !== ''" :bugNo="bugNo" />
+            </el-tab-pane>
+          </el-tabs>
+        </div>
+      </div>
+      <div class="right">
+        <div class="title">
+          基本信息
+          <el-button
+            class="fr"
+            :size="'mini'"
+            v-if="
+              powers.some((item) => item == '005') ||
+              powers.some((item) => item == '012')
+            "
+            type="primary"
+            style="margin: 6px 0 0 0"
+            @click="submitForm"
+            >保存
+          </el-button>
+        </div>
+        <el-form
+          ref="ruleForm"
+          :model="ruleForm"
+          :size="'mini'"
+          label-width="80px"
+          class="demo-ruleForm"
+        >
+          <el-form-item label="处理状态:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.status"
+              style="width: 100%"
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="处理状态:"
+            >
+              <el-option
+                v-for="item in statusOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="处理人:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.deal_id"
+              style="width: 100%"
+              filterable
+              clearable
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="处理人:"
+            >
+              <el-option
+                v-for="item in userOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+            <div
+              class="setUser"
+              v-if="powers.some((item) => item == '002')"
+              @click="showModel = true"
+            >
+              <i class="el-icon-setting"></i>
+            </div>
+          </el-form-item>
+          <el-form-item label="优先级:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.level"
+              style="width: 100%"
+              :size="'mini'"
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="优先级"
+            >
+              <el-option
+                v-for="item in levelOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="需求类型:">
+            <el-select
+              class="notshow"
+              v-model="ruleForm.type"
+              style="width: 100%"
+              :size="'mini'"
+              :disabled="!powers.some((item) => item == '012')"
+              placeholder="需求类型"
+            >
+              <el-option
+                v-for="item in typeOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="功能区:">
+            <good-class
+              class="notshow"
+              :value="ruleForm.model_id"
+              :size="'mini'"
+              @handleChange="goods_class_change"
+              :disabled="!powers.some((item) => item == '012')"
+              :type="'1'"
+              :placeholder="'功能区'"
+            />
+          </el-form-item>
+          <el-form-item label="业务编号:">
+            <el-input
+              class="notshow"
+              type="textarea"
+              :autosize="{ minRows: 1, maxRows: 10}"
+              placeholder="业务编号"
+              :disabled="!powers.some((item) => item == '005')"
+              v-model="ruleForm.noteNo"
+            >
+            </el-input>
+          </el-form-item>
+          <el-form-item label="创建人:">
+            <div
+              class="show-input"
+              :class="{ disabled: !powers.some((item) => item == '012') }"
+            >
+              {{ ruleForm.apply_name }}
+            </div>
+          </el-form-item>
+
+          <el-form-item label="创建人部门:">
+            <div class="show-input hei">
+              <el-tag
+                style="margin: 0 5px 0 0"
+                type="info"
+                size="mini"
+                v-for="(ditem, dindex) in ruleForm.company_name"
+                :key="ditem + dindex"
+              >
+                <span
+                  v-for="(cItem, cindex) in ditem"
+                  :key="cItem + dindex + cindex"
+                  :style="{ marginLeft: cindex > 0 ? '0px' : '0px' }"
+                >
+                  <span v-show="cindex > 0">/</span
+                  ><span>{{ cItem.name }}</span>
+                </span>
+              </el-tag>
+            </div>
+          </el-form-item>
+        </el-form>
+        <div class="tijiaoBTN"></div>
+      </div>
+      <select-handler-model
+        :id="queryId"
+        :show-model="showModel"
+        :type="type"
+        @refresh="(showModel = false), getMuser()"
+        @cancel="showModel = false"
+      />
+    </div>
+    <no-auth v-else></no-auth>
+  </div>
+</template>
+<script>
+import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import record from "@/components/record";
+import comModule from "@/components/comModule";
+import Tinymce from "@/components/Tinymce";
+import selectHandlerModel from "@/components/select-handler-model";
+
+import {
+  statusOptions,
+  levelOptions,
+  typeOptions,
+} from "@/views/pucColumns";
+import {
+  platformType,
+} from "./columns";
+export default {
+  name: "yunshuDetail",
+  mixins: [resToken],
+  components: {
+    Tinymce,
+    record,
+    comModule,
+    selectHandlerModel,
+  },
+  computed: {
+    //组件SIZE设置
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "yunshuDetail"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      pinglunEdit: false,
+      parmValue: {
+        page: 1, // 页码
+        size: 5, // 每页显示条数
+        id: this.queryId,
+        total: 0,
+      },
+      tableData: [],
+      bugNo: "",
+      statusOptions: statusOptions,
+      levelOptions: levelOptions,
+      typeOptions: typeOptions,
+      type: platformType,
+      userOptions: [],
+      ruleForm: {},
+      activeName: "1",
+      newTime: "",
+      showModel: false,
+      queryId: "",
+
+      loading: false,
+      rulesThis: this.rules,
+    };
+  },
+  mounted() {
+    this.queryId = this.$route.query.id;
+    this.initForm();
+  },
+  methods: {
+    async handleCurrentChange(val) {
+      console.log(val);
+      this.parmValue.page = val;
+      await this.searchList();
+    },
+    async initForm() {
+      this.loading = true;
+      this.newTime = "";
+      this.InitializeForm();
+      await this.resetForm();
+      await this.initData();
+      this.loading = false;
+      await this.searchList();
+    },
+
+    getNewTime() {
+      this.newTime = new Date().valueOf() + "";
+    },
+    editItem(index) {
+      this.tableData.forEach((v) => {
+        v.edit = false;
+      });
+      this.tableData[index].edit = true;
+    },
+    goods_class_change(e) {
+      this.ruleForm.model_id = e;
+      this.$refs.ruleForm.validateField("model_id");
+    },
+    async deleteById(id) {
+      await this.$confirm("确定要删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            id: id,
+          };
+          const res = await asyncRequest.comDel(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "删除成功",
+              message: "",
+            });
+            this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    async plunsubmit(e) {
+      if (!this.loading) {
+        this.loading = true;
+        const { id, input } = e;
+        let model = {
+          id: id,
+          talk_note: input,
+          bugNo: this.ruleForm.bugNo,
+        };
+        let res = {};
+        if (id === "add") {
+          delete model["id"];
+          res = await asyncRequest.comAdd(model);
+        } else {
+          res = await asyncRequest.comUpdate(model);
+        }
+        this.loading = false;
+        if (res && res.code === 0) {
+          this.$notify.success({
+            title: id === "add" ? "添加成功!" : "修改成功!",
+            message: "",
+          });
+          if (id === "add") {
+            this.pinglunEdit = false;
+          }
+          await this.initForm();
+        } else if (res && res.code >= 100 && res.code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(res.message);
+        }
+      }
+    },
+    async initData() {
+      const res = await asyncRequest.detail({ id: this.queryId });
+      if (res && res.code === 0) {
+        let {
+          id,
+          bugNo,
+          title,
+          company_type,
+          level,
+          type,
+          remark,
+          status,
+          apply_name,
+          model_id,
+          deal_id,
+          company_name,
+          noteNo,
+        } = res.data;
+        this.bugNo = bugNo;
+        // console.log(res.data);
+        this.ruleForm = {
+          id: id,
+          bugNo: bugNo,
+          title: title || "",
+          company_type: company_type || platformType,
+          remark: remark || "",
+          status: status || "",
+          level: level || "",
+          type: type || "",
+          noteNo: noteNo || "",
+          apply_name: apply_name || "",
+          model_id: model_id || [], //.split(",")
+          deal_id: deal_id || "",
+          company_name: company_name || [],
+        };
+        this.getNewTime();
+        await this.getMuser();
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+    },
+    async getMuser() {
+      this.userOptions = [];
+      const res = await asyncRequest.MUser({ company_id: platformType });
+      if (res && res.code === 0) {
+        let list = res.data;
+        list.forEach((v) => {
+          let model = {
+            value: v.manange_id,
+            label: v.manange_name,
+          };
+          this.userOptions.push(model);
+        });
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(res.message);
+      }
+    },
+    // 刷新表格
+    async searchList() {
+      // this.tableData = [];
+      this.parmValue.id = this.queryId;
+      const res = await asyncRequest.cloudlist(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        let { list, count } = res.data;
+        list.forEach((v) => {
+          v.edit = false;
+        });
+        this.tableData = list;
+        this.parmValue.total = Number(count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.parmValue.total = 0;
+      }
+    },
+    // 重置
+    async resetForm() {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          this.InitializeForm();
+        }
+      });
+    },
+    InitializeForm() {
+      this.ruleForm = {
+        id: "",
+        bugNo: "",
+        title: "",
+        company_type: "",
+        remark: "",
+        status: "",
+        level: "",
+        type: "",
+        apply_name: "",
+        noteNo: "",
+        deal_id: "",
+        model_id: [],
+        company_name: [],
+      };
+    },
+    // 保存更改
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.loading = true;
+          let model = JSON.parse(JSON.stringify(this.ruleForm));
+          // model.model_id = model.model_id.toString();
+          delete model["company_name"];
+          delete model["apply_name"];
+          let remark = model.remark;
+          remark = remark.replace(/\n/g, "");
+          remark = remark.replace(/"/g, "'");
+          model.remark = remark;
+          let length = 5000;
+          if (model.remark.length > length) {
+            this.$message.warning("描述文字及标签总长度不能超过5000!");
+            this.loading = false;
+            return;
+          }
+          let res = await asyncRequest.update(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "修改成功",
+              message: "",
+            });
+
+            await this.initForm();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+          this.loading = false;
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.yunshuDetail {
+  width: 100%;
+  padding: 16px;
+  box-sizing: border-box;
+  /deep/ .notshow {
+    .el-textarea__inner {
+      border-color: transparent !important;
+      background: transparent !important;
+      &:hover {
+        cursor: pointer;
+        background: rgb(242, 245, 250);
+      }
+    }
+    &:hover {
+      cursor: pointer;
+      background: rgb(242, 245, 250);
+    }
+    &.el-input--medium {
+      input {
+        color: #000 !important;
+        font-size: 16px;
+      }
+    }
+    input {
+      border-color: transparent !important;
+      background: transparent !important;
+    }
+    // &.el-input--mini {
+    input::-webkit-input-placeholder {
+      font-size: 12px !important;
+    }
+    input::-moz-placeholder {
+      /* Mozilla Firefox 19+ */
+      font-size: 12px !important;
+    }
+    input:-moz-placeholder {
+      /* Mozilla Firefox 4 to 18 */
+      font-size: 12px !important;
+    }
+    input:-ms-input-placeholder {
+      /* Internet Explorer 10-11 */
+      font-size: 12px !important;
+    }
+    // }
+    .el-input__suffix {
+      i {
+        color: transparent !important;
+      }
+    }
+  }
+  .left {
+    width: calc(100% - 350px);
+    float: left;
+    // padding: 16px;
+    box-sizing: border-box;
+    .title {
+      padding: 0 0 4px 0;
+      .title-left {
+        float: left;
+        height: 36px;
+        line-height: 36px;
+        width: 190px;
+      }
+      .title-right {
+        float: left;
+        width: calc(100% - 190px);
+        height: 30px;
+        line-height: 30px;
+      }
+    }
+
+    .desc {
+      width: 100%;
+      box-sizing: border-box;
+      padding: 0 2px 0 0;
+      height: 421px;
+
+      .desc-main {
+        position: relative;
+        border: 2px solid #dfe4ed;
+        line-height: 40px;
+        width: 100%;
+        height: 100%;
+        padding: 16px;
+        box-sizing: border-box;
+        overflow-y: scroll;
+      }
+    }
+    .pinglun {
+      width: 100%;
+      box-sizing: border-box;
+      padding: 0 0 16px 0;
+      .pinglun-title {
+        color: #252b3a;
+        color: var(--devui-text, #252b3a);
+        font-size: 14px;
+        height: 50px;
+        line-height: 60px;
+        font-weight: 700;
+      }
+      .pinglun-input {
+        padding: 0 12px;
+        font-size: 14px;
+        height: 30px;
+        line-height: 30px;
+        color: #c0c4cc;
+        border: 1px solid #dcdfe6;
+        border-radius: 4px;
+        &:hover {
+          cursor: pointer;
+        }
+      }
+    }
+    .tableData {
+      width: 100%;
+      box-sizing: border-box;
+      padding: 26px 0 0 5px;
+      .tableData-main {
+        position: relative;
+
+        .tableData-title {
+          height: 26px;
+          position: absolute;
+          z-index: 2;
+          left: -4px;
+          top: -13px;
+          line-height: 26px;
+          width: 100%;
+          padding: 0 16px 0 0;
+          .dian-mian {
+            position: relative;
+            width: 5px;
+            height: 26px;
+            line-height: 26px;
+            .dian {
+              width: 6px;
+              height: 6px;
+              border-radius: 50%;
+              overflow: hidden;
+              z-index: 3;
+              position: absolute;
+              margin: 9px 0 0 0;
+              background: #252b3a;
+            }
+            .dian-zhe {
+              background: #fff;
+              width: 2px;
+              height: 13px;
+              position: absolute;
+              left: 2px;
+              bottom: 0;
+            }
+          }
+
+          .user {
+            font-size: 12px;
+            padding: 0 0 0 18px;
+          }
+          .time {
+            font-size: 12px;
+            padding: 0 0 0 16px;
+            color: #8a8e99;
+          }
+          .operation {
+            i {
+              margin: 0 0 0 8px;
+              color: #8a8e99;
+              &:hover {
+                cursor: pointer;
+              }
+            }
+          }
+        }
+        .tableData-talk_note {
+          margin: -11px 0 0 0;
+          padding: 32px 16px 50px 32px;
+          font-size: 12px;
+          .talk-note-main {
+            word-break: break-all;
+            line-height: 22px;
+            /deep/ * {
+              word-break: break-all;
+            }
+          }
+        }
+      }
+    }
+    .my-page {
+      position: relative;
+      margin: -30px 0 10px 0;
+      width: 100%;
+      box-sizing: border-box;
+    }
+  }
+  .right {
+    width: 350px;
+    float: right;
+    padding: 40px 0 0 18px;
+    box-sizing: border-box;
+
+    .title {
+      width: 100%;
+      padding: 0 20px;
+      height: 40px;
+      -webkit-box-sizing: border-box;
+      box-sizing: border-box;
+      line-height: 40px;
+      display: inline-block;
+      list-style: none;
+      font-size: 14px;
+      font-weight: 500;
+      color: #303133;
+      position: relative;
+      border-bottom: 2px solid rgb(223, 228, 237);
+      margin: 0 0 18px 0;
+    }
+    .demo-ruleForm {
+      /deep/ .el-form-item--mini.el-form-item {
+        margin-bottom: 10px !important;
+      }
+      /deep/ .el-form-item--mini .el-form-item__label {
+        font-size: 12px !important;
+        font-weight: lighter !important;
+        color: #000 !important;
+        padding: 0 3px 0 0 !important;
+      }
+
+      .show-input {
+        height: 28px !important;
+        line-height: 28px !important;
+        overflow: hidden !important;
+        font-size: 12px !important;
+        color: #606266 !important;
+        padding: 0 15px !important;
+        box-sizing: border-box !important;
+        &.ho {
+          &:hover {
+            cursor: pointer;
+            background: rgb(242, 245, 250);
+          }
+        }
+        &.disabled {
+          color: #c0c4cc !important;
+          // cursor: not-allowed !important;
+        }
+        &.hei {
+          height: auto !important;
+          line-height: 28px auto !important;
+        }
+      }
+      .setUser {
+        position: absolute;
+        right: 0;
+        top: 0;
+        width: 30px;
+        height: 28px;
+        line-height: 28px;
+        text-align: center;
+        &:hover {
+          cursor: pointer;
+        }
+        i {
+          font-size: 16px;
+        }
+      }
+    }
+  }
+}
+.atuser {
+  width: 100%;
+  border: 1px solid red;
+  .editor {
+    width: 700px;
+    height: 160px;
+    overflow: hidden;
+    border: 0px;
+    outline: none;
+    resize: none;
+    -webkit-appearance: none;
+  }
+}
+</style>

+ 401 - 0
src/views/yunshu/yunshuIndex/index.vue

@@ -0,0 +1,401 @@
+<template>
+  <div class="yunshuIndex pagePadding">
+    <div
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+    >
+      <ex-table
+        v-loading="loading"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @screen-reset="
+          parmValue.page = 1;
+          pageInfo.curr = 1;
+          searchList();
+        "
+        @screen-submit="
+          parmValue.page = 1;
+          pageInfo.curr = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{}">
+          <div style="width: 100%">
+            <el-row style="padding: 0 0 0 80px">
+              <el-col :span="5" style="width: 100px">
+                <el-select
+                  v-model="parmValue.level"
+                  style="width: 100%"
+                  :size="searchSize"
+                  clearable
+                  @change="
+                    parmValue.page = 1;
+                    pageInfo.curr = 1;
+                    searchList();
+                  "
+                  placeholder="优先级"
+                >
+                  <el-option
+                    v-for="item in levelOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-col>
+              <el-col :span="5" style="width: 140px; padding: 0 0 0 10px">
+                <el-select
+                  v-model="parmValue.type"
+                  style="width: 100%"
+                  :size="searchSize"
+                  clearable
+                  @change="
+                    parmValue.page = 1;
+                    pageInfo.curr = 1;
+                    searchList();
+                  "
+                  placeholder="需求类型"
+                >
+                  <el-option
+                    v-for="item in typeOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                    clearable
+                  >
+                  </el-option>
+                </el-select>
+              </el-col>
+              <el-col :span="5" style="width: 301px; padding: 0 0 0 10px">
+                <period-date-picker
+                  :start="parmValue.start"
+                  :end="parmValue.end"
+                  :width="'134px'"
+                  :size="searchSize"
+                  @timeReturned="handleTime"
+                />
+              </el-col>
+
+              <el-col :span="3" style="width: 66px; float: right">
+                <el-button
+                  type="primary"
+                  :size="searchSize"
+                  style="float: right"
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
+              </el-col>
+            </el-row>
+            <el-row style="padding: 12px 0 0 0">
+              <el-col :span="5" style="width: 180px">
+                <el-select
+                  v-model="parmValue.status"
+                  style="width: 100%"
+                  clearable
+                  @change="
+                    parmValue.page = 1;
+                    pageInfo.curr = 1;
+                    searchList();
+                  "
+                  :size="searchSize"
+                  placeholder="状态筛选"
+                >
+                  <el-option
+                    v-for="item in seachStatus"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-col>
+              <el-col :span="10" style="width: 410px; padding: 0 0 0 10px">
+                <el-input
+                  placeholder="关键字"
+                  v-model="input"
+                  :size="searchSize"
+                  class="input-with-select"
+                >
+                  <el-select
+                    v-model="select"
+                    slot="prepend"
+                    style="width: 100px"
+                    placeholder="筛选类型"
+                  >
+                    <el-option label="需求编号" value="1" />
+                    <el-option label="业务编号" value="0" />
+                    <el-option label="需求标题" value="2" />
+                    <el-option label="申请人" value="3" />
+                    <el-option label="处理人" value="4" />
+                  </el-select>
+                  <el-button
+                    slot="append"
+                    icon="el-icon-search"
+                    @click="
+                      parmValue.page = 1;
+                      pageInfo.curr = 1;
+                      searchList();
+                    "
+                  ></el-button>
+                </el-input>
+              </el-col>
+              <el-col
+                :span="3"
+                style="width: 66px; float: right"
+                v-if="powers.some((item) => item == '003')"
+              >
+                <el-button
+                  :size="searchSize"
+                  type="success"
+                  style="float: right"
+                  @click="showModel = true"
+                >
+                  添加
+                </el-button>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.status == '0' ? 'warning' : ''"
+            v-text="
+              (
+                statusOptions.find((item) => item.value == scope.row.status) ||
+                {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+        <template #company_name="{ scope }">
+          <el-tag
+            style="margin: 0 5px 0 0"
+            :size="tablebtnSize"
+            type="info"
+            v-for="(ditem, dindex) in scope.row.company_name"
+            :key="ditem + dindex"
+          >
+            <span
+              v-for="(cItem, cindex) in ditem"
+              :key="cItem + dindex + cindex"
+              :style="{ marginLeft: cindex > 0 ? '0px' : '0px' }"
+            >
+              <span v-show="cindex > 0">/</span><span>{{ cItem.name }}</span>
+            </span>
+          </el-tag>
+        </template>
+        <template #level="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="
+              (levelOptions.find((item) => item.value == scope.row.level) || {})
+                .type || 'success'
+            "
+            v-text="
+              (levelOptions.find((item) => item.value == scope.row.level) || {})
+                .label || '--'
+            "
+          ></el-tag>
+        </template>
+        <template #types="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.type == '0' ? 'warning' : ''"
+            v-text="
+              (typeOptions.find((item) => item.value == scope.row.type) || {})
+                .label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #operation="{ scope }">
+          <el-tooltip
+            v-if="powers.some((item) => item == '007')"
+            effect="dark"
+            content="详情"
+            placement="top"
+          >
+            <i
+              class="el-icon-view tb-icon"
+              @click="routeGoto('yunshuIndexDetail', { id: scope.row.id })"
+            ></i>
+          </el-tooltip>
+        </template>
+      </ex-table>
+      <!-- 弹窗 新增/修改 -->
+      <add-edit
+        :show-model="showModel"
+        @refresh="searchList"
+        @cancel="showModel = false"
+      />
+    </div>
+    <no-auth v-else></no-auth>
+  </div>
+</template>
+<script>
+import asyncRequest from "@/apis/service/purchaseAndSale/adjust";
+import mixinPage from "@/mixins/elPaginationHandle";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import addEdit from "@/components/addEdit";
+
+import {
+  seachStatus,
+  statusOptions,
+  levelOptions,
+  typeOptions,
+  columnsDeploy,
+} from "@/views/pucColumns";
+import {
+  platformType,
+} from "./columns";
+export default {
+  name: "yunshuIndex",
+  mixins: [mixinPage, resToken],
+  components: {
+    addEdit,
+  },
+  computed: {
+    //组件SIZE设置
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "yunshuIndex"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+      select: "1",
+      input: "",
+      seachStatus: seachStatus,
+      statusOptions: statusOptions,
+      levelOptions: levelOptions,
+      typeOptions: typeOptions,
+      showModel1: false,
+      loading: true,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      parmValue: {
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        apply_name: "",
+        title: "",
+        type: "",
+        level: "",
+        bugNo: "",
+        status: "",
+        noteNo: "",
+        company_type:platformType,
+        deal_name: "",
+        start: "",
+        end: "",
+      },
+
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: columnsDeploy,
+    };
+  },
+  mounted() {
+    this.searchList();
+  },
+  methods: {
+    // restSearch() {
+    //   // 表格 - 分页
+    //   this.pageInfo = {
+    //     size: 15,
+    //     curr: 1,
+    //     total: 0,
+    //   };
+    //   this.parmValue = {
+    //     page: 1, // 页码
+    //     size: 15, // 每页显示条数
+    //   };
+    //   this.searchList();
+    // },
+    // 新建/编辑/详情
+    openModal(id, isDetail) {
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = isDetail;
+    },
+    // 时间
+    async handleTime(e) {
+      if (e.startTime !== "") {
+        this.parmValue.start = e.startTime;
+      } else {
+        this.parmValue.start = "";
+      }
+      if (e.endTime !== "") {
+        this.parmValue.end = e.endTime;
+      } else {
+        this.parmValue.end = "";
+      }
+      if (this.parmValue.start !== "" && this.parmValue.end !== "") {
+        this.parmValue.page = 1;
+        this.pageInfo.curr = 1;
+        await this.searchList();
+      }
+    },
+    // 刷新表格
+    async searchList() {
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end === "") ||
+        (this.parmValue.start === "" && this.parmValue.end !== "")
+      ) {
+        this.$message.warning("时间区间不完整!");
+        return;
+      }
+      this.loading = true;
+      this.parmValue.noteNo = this.select === "0" ? this.input : "";
+      this.parmValue.bugNo = this.select === "1" ? this.input : "";
+      this.parmValue.title = this.select === "2" ? this.input : "";
+      this.parmValue.apply_name = this.select === "3" ? this.input : "";
+      this.parmValue.deal_name = this.select === "4" ? this.input : "";
+
+      const res = await asyncRequest.list(this.parmValue);
+      if (res && res.code === 0 && res.data) {
+        this.tableData = res.data.list;
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 0 - 0
src/views/yunshu/采销平台